{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "05ffc3b2-3bac-4652-9753-9919b9346d16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "  None   Some Marked \n",
       "    42     14     28 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(grid)\n",
    "library(vcd)\n",
    "\n",
    "counts <- table(Arthritis$Improved)\n",
    "counts"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d6a46e45-5d0e-4776-940a-b0f939be7794",
   "metadata": {},
   "source": [
    "### 数据集及个字段的含义"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8c5d3ce-84e2-4f3e-a8bd-f69a10857c30",
   "metadata": {},
   "source": [
    "在R语言中， Arthritis 数据集来自 vcd 包。它是一个关于关节炎治疗的数据。主要字段含义如下：\n",
    " \n",
    "-  ID ：患者的唯一标识符，用于区分不同的个体。\n",
    "-  Treatment ：治疗方法，这是一个分类变量，通常包含两种不同的治疗类别（例如药物A和药物B），用于比较不同治疗对关节炎的效果。\n",
    "-  Sex ：患者的性别，也是一个分类变量，有男、女两个类别，用于分析性别因素是否对治疗反应等方面产生影响。\n",
    "-  Age ：患者的年龄，是一个数值变量，可用于查看年龄与治疗效果或者关节炎症状等之间的关联。\n",
    "-  Improved ：代表患者病情改善的情况，是一个分类变量，可能包括如“None”（没有改善）、“Some”（有一定改善）、“Marked”（显著改善）等类别，用于评估治疗的有效性。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e10bf48b-3e38-4a1c-81f1-9510e3b5ccb6",
   "metadata": {},
   "source": [
    "state.x77数据集是R语言中的一个内置数据集，包含了美国50个州在1977年的以下统计数据：\n",
    "1. **Population**：人口，指的是1975年7月1日的人口估计数，单位是人。\n",
    "2. **Income**：人均收入，为1974年的人均收入数据，单位是美元/人。\n",
    "3. **Illiteracy**：文盲率，是1970年的文盲人口占总人口的百分比，单位为%。\n",
    "4. **Life Exp**：预期寿命，表示1969-1971年间的平均预期寿命，单位是年。\n",
    "5. **Murder**：谋杀率，即1976年每100,000人口中谋杀和非过失杀人案件的发生率，单位是%（每100,000人） 。\n",
    "6. **HS Grad**：高中毕业率，为1970年的高中毕业人口占总人口的百分比，单位是%。\n",
    "7. **Frost**：平均霜冻天数，指1931-1960年间首府或大城市地区日最低气温低于冰点的平均天数，单位是天。\n",
    "8. **Area**：土地面积，指各州的土地面积，单位是平方英里 。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc6f2139-56f5-40ab-99a3-37f40f242c05",
   "metadata": {},
   "source": [
    "在 MASS 包的 UScrime 数据集中，主要包含以下一些变量：\n",
    " \n",
    "-  M ：指14 - 24岁男性人口数（单位：千人）。\n",
    "-  So ：社会经济地位的一种衡量指标，综合了收入、教育等多种因素。\n",
    "-  Ed ：中学教育程度以上男性的比例（单位：%）。\n",
    "-  Po1 ：1960年每10万人口的警察数量。\n",
    "-  Po2 ：1950年每10万人口的警察数量。\n",
    "-  LF ：劳动力参与率（单位：%）。\n",
    "-  M.F ：每1000名女性对应的男性数量。\n",
    "-  Pop ：州人口数（单位：千人）。\n",
    "-  NW ：非白人人口比例（单位：%）。\n",
    "-  U1 ：14 - 24岁城市男性失业率（单位：%）。\n",
    "-  U2 ：35 - 39岁城市男性失业率（单位：%）。\n",
    "-  GDP ：人均州生产总值（单位：美元）。\n",
    "-  Ineq ：收入不平等的衡量指标。\n",
    "-  Prob ：犯罪率，是这个数据集的响应变量，用于分析其他变量对犯罪率的影响。\n",
    "-  Time ：平均刑期（单位：月）。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d156fbd-0a2b-4950-a8ff-a89d087c6ff8",
   "metadata": {},
   "source": [
    "## chapter6"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6cfaf544-5aad-4c7b-981b-4b9f070b663a",
   "metadata": {},
   "source": [
    "### 条形图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0eb698f1-e335-4c0c-be25-e86d6f47cfaa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"horizontal bar plot\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mfrow=c(1,2))\n",
    "barplot(counts,main=\"simple bar plot\",xlab=\"improvement\",ylab=\"freqency\")\n",
    "barplot(counts,main='horizontal bar plot',xlab=\"freqency\",ylab=\"imporvement\",horiz=TRUE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "946e4cde-04a4-43ae-840f-9ae5501539b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"horizontal bar plot\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mfrow=c(1,2))\n",
    "plot(Arthritis$Improved,main=\"simple bar plot\",xlab=\"improvement\",ylab=\"freqency\")\n",
    "plot(Arthritis$Improved,main='horizontal bar plot',xlab=\"freqency\",ylab=\"imporvement\",horiz=TRUE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fcdb9516-89a4-4b6a-a3aa-631194a0bee6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "        \n",
       "         Placebo Treated\n",
       "  None        29      13\n",
       "  Some         7       7\n",
       "  Marked       7      21"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "counts <- table(Arthritis$Improved,Arthritis$Treatment)\n",
    "counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "690778c1-95d5-41ae-b2d0-18efd0738433",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nkRDJp8a/ItJ5nzdXN86LP+5OhkiI5FPj3xCpTAdXCs+ciyISIvnU+DdEKkxyvDRT11NiCtei\niIRIPjX+DZESc3lMX0ziWhSREMmnxr8h0ujOL+7bwCASIvnU+DdE4h1psB5ECuKnRbp9Rjpd\nmyk+IyFSGD8tUpUN9tqlpWtJREIknxr/iEjVuWiOIyX5nuNIiBTCj4s0G0RCJJ8aI1JVDe/r\nbBAJkXxqjEgTEAmRfGqMSBMQCZF8aoxIExAJkXxq/BsiGfP6Y9CrRfsp/6ouASL1INJGIh0Q\nqV8PIgXx0yJVl8T95YkeREIknxr/iEjVxX1iUA8iIZJPjX9FpNvW3eXvhSpEQiS/Gv+MSHNB\nJETyqTEiTUAkRPKpMSJNQCRE8qkxIk1AJETyqTEiTUAkRPKpMSJNQCRE8qkxIk1AJETyqTEi\nTUAkRPKpMSJNQCRE8qkxIk1AJETyqTEiTUAkRPKpMSJNQCRE8qkxIk1AJETyqTEiTUAkRPKp\nMSJNQCRE8qkxIk1AJETyqTEiTUAkRPKpsVmf5escAiIhkk+NZYKogEiI5FNjmSAqIBIi+dRY\nJogKiIRIPjWWCaICIiGST41lgqiASIjkU2OZICogEiL51FgmiAqIhEg+NZYJogIiIZJPjWWC\nqIBIiORTY5kgKiASIvnUWCaICoiESD41lgmiAiIhkk+NZYKogEiI5FNjmSAqIBIi+dRYJogK\niIRIPjWWCaICIiGST41lgqiASIjkU2OZICogEiL51FgmiAqIhEg+NZYJogIiIZJPjWWCqIBI\niORTY5kgKiASIvnUWCaICoiESD41lgmiAiIhkk+NZYKogEiI5FNjmSAqIBIi+dRYJogKiIRI\nPjWWCaICIiGST41lgqiASIjkU2OZICogEiL51FgmiAqItJ1I533e3PgnL87uBRHJHkQFRNpK\npDId3EQrcy6KSPYgKiDSViIVJjlemqnrKTGFa1FEsgdRAZG2Eikxl8f0xSSuRRHJHkQFRNpK\npNFNUd13SEUkexAVEIl3JJ8aywRR4U2R1rtDdbQ4qiLdPiOdrs0Un5ECgqjwpkj//ibSyBWL\nY8d793c2sD0tXUsikj2ICoi0mUjVuWiOIyX5nuNI3kFUQKTtRJoNItmDqIBIoiK9/kgpM35l\ngqiASKIiDUEkexAVEAmR3DW2RFIJogIiIZK7xpZIKkFUQKStRHrjyBoi2YOogEhbiXRApBhB\n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\nJIAIIBJABP4PvPyP4wJ4+eYAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"grouped bar plot\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "opar = par(no.readonly=TRUE)\n",
    "par(mfrow=c(1,2))\n",
    "# layout(matrix(c(1,1,2,2),2,2,byrow=FALSE))\n",
    "barplot(counts,main=\"stacked bar plot\",xlab=\"improvement\",ylab=\"freqency\",col=c(\"red\",\"yellow\",\"green\"))\n",
    "# legend(\"topleft\",legend=c(\"A\",\"B\"),inset=0.05,title=\"Drug Type\",lty=c(1,2),pch=c(15,17),col=c(\"red\",\"blue\"))\n",
    "barplot(counts,\n",
    "        main='grouped bar plot',\n",
    "        xlab=\"freqency\",ylab=\"imporvement\",\n",
    "        col=c(\"red\",\"yellow\",\"green\"),\n",
    "        width=2,\n",
    "        legend=rownames(counts),\n",
    "        beside=TRUE\n",
    "       )\n",
    "\n",
    "par(opar)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "97cf3bed-bb51-4d2b-92bb-cde01eb2d7e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A data.frame: 6 × 9</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>state.region</th><th scope=col>Population</th><th scope=col>Income</th><th scope=col>Illiteracy</th><th scope=col>Life.Exp</th><th scope=col>Murder</th><th scope=col>HS.Grad</th><th scope=col>Frost</th><th scope=col>Area</th></tr>\n",
       "\t<tr><th></th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Alabama</th><td>South</td><td> 3615</td><td>3624</td><td>2.1</td><td>69.05</td><td>15.1</td><td>41.3</td><td> 20</td><td> 50708</td></tr>\n",
       "\t<tr><th scope=row>Alaska</th><td>West </td><td>  365</td><td>6315</td><td>1.5</td><td>69.31</td><td>11.3</td><td>66.7</td><td>152</td><td>566432</td></tr>\n",
       "\t<tr><th scope=row>Arizona</th><td>West </td><td> 2212</td><td>4530</td><td>1.8</td><td>70.55</td><td> 7.8</td><td>58.1</td><td> 15</td><td>113417</td></tr>\n",
       "\t<tr><th scope=row>Arkansas</th><td>South</td><td> 2110</td><td>3378</td><td>1.9</td><td>70.66</td><td>10.1</td><td>39.9</td><td> 65</td><td> 51945</td></tr>\n",
       "\t<tr><th scope=row>California</th><td>West </td><td>21198</td><td>5114</td><td>1.1</td><td>71.71</td><td>10.3</td><td>62.6</td><td> 20</td><td>156361</td></tr>\n",
       "\t<tr><th scope=row>Colorado</th><td>West </td><td> 2541</td><td>4884</td><td>0.7</td><td>72.06</td><td> 6.8</td><td>63.9</td><td>166</td><td>103766</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A data.frame: 6 × 9\n",
       "\\begin{tabular}{r|lllllllll}\n",
       "  & state.region & Population & Income & Illiteracy & Life.Exp & Murder & HS.Grad & Frost & Area\\\\\n",
       "  & <fct> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl>\\\\\n",
       "\\hline\n",
       "\tAlabama & South &  3615 & 3624 & 2.1 & 69.05 & 15.1 & 41.3 &  20 &  50708\\\\\n",
       "\tAlaska & West  &   365 & 6315 & 1.5 & 69.31 & 11.3 & 66.7 & 152 & 566432\\\\\n",
       "\tArizona & West  &  2212 & 4530 & 1.8 & 70.55 &  7.8 & 58.1 &  15 & 113417\\\\\n",
       "\tArkansas & South &  2110 & 3378 & 1.9 & 70.66 & 10.1 & 39.9 &  65 &  51945\\\\\n",
       "\tCalifornia & West  & 21198 & 5114 & 1.1 & 71.71 & 10.3 & 62.6 &  20 & 156361\\\\\n",
       "\tColorado & West  &  2541 & 4884 & 0.7 & 72.06 &  6.8 & 63.9 & 166 & 103766\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A data.frame: 6 × 9\n",
       "\n",
       "| <!--/--> | state.region &lt;fct&gt; | Population &lt;dbl&gt; | Income &lt;dbl&gt; | Illiteracy &lt;dbl&gt; | Life.Exp &lt;dbl&gt; | Murder &lt;dbl&gt; | HS.Grad &lt;dbl&gt; | Frost &lt;dbl&gt; | Area &lt;dbl&gt; |\n",
       "|---|---|---|---|---|---|---|---|---|---|\n",
       "| Alabama | South |  3615 | 3624 | 2.1 | 69.05 | 15.1 | 41.3 |  20 |  50708 |\n",
       "| Alaska | West  |   365 | 6315 | 1.5 | 69.31 | 11.3 | 66.7 | 152 | 566432 |\n",
       "| Arizona | West  |  2212 | 4530 | 1.8 | 70.55 |  7.8 | 58.1 |  15 | 113417 |\n",
       "| Arkansas | South |  2110 | 3378 | 1.9 | 70.66 | 10.1 | 39.9 |  65 |  51945 |\n",
       "| California | West  | 21198 | 5114 | 1.1 | 71.71 | 10.3 | 62.6 |  20 | 156361 |\n",
       "| Colorado | West  |  2541 | 4884 | 0.7 | 72.06 |  6.8 | 63.9 | 166 | 103766 |\n",
       "\n"
      ],
      "text/plain": [
       "           state.region Population Income Illiteracy Life.Exp Murder HS.Grad\n",
       "Alabama    South         3615      3624   2.1        69.05    15.1   41.3   \n",
       "Alaska     West           365      6315   1.5        69.31    11.3   66.7   \n",
       "Arizona    West          2212      4530   1.8        70.55     7.8   58.1   \n",
       "Arkansas   South         2110      3378   1.9        70.66    10.1   39.9   \n",
       "California West         21198      5114   1.1        71.71    10.3   62.6   \n",
       "Colorado   West          2541      4884   0.7        72.06     6.8   63.9   \n",
       "           Frost Area  \n",
       "Alabama     20    50708\n",
       "Alaska     152   566432\n",
       "Arizona     15   113417\n",
       "Arkansas    65    51945\n",
       "California  20   156361\n",
       "Colorado   166   103766"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "states <- data.frame(state.region,state.x77)\n",
    "head(states)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "27fecae7-8670-4693-8ff4-8433f95aaddd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".list-inline {list-style: none; margin:0; padding: 0}\n",
       ".list-inline>li {display: inline-block}\n",
       ".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n",
       "</style>\n",
       "<ol class=list-inline><li>'state.region'</li><li>'Population'</li><li>'Income'</li><li>'Illiteracy'</li><li>'Life.Exp'</li><li>'Murder'</li><li>'HS.Grad'</li><li>'Frost'</li><li>'Area'</li></ol>\n"
      ],
      "text/latex": [
       "\\begin{enumerate*}\n",
       "\\item 'state.region'\n",
       "\\item 'Population'\n",
       "\\item 'Income'\n",
       "\\item 'Illiteracy'\n",
       "\\item 'Life.Exp'\n",
       "\\item 'Murder'\n",
       "\\item 'HS.Grad'\n",
       "\\item 'Frost'\n",
       "\\item 'Area'\n",
       "\\end{enumerate*}\n"
      ],
      "text/markdown": [
       "1. 'state.region'\n",
       "2. 'Population'\n",
       "3. 'Income'\n",
       "4. 'Illiteracy'\n",
       "5. 'Life.Exp'\n",
       "6. 'Murder'\n",
       "7. 'HS.Grad'\n",
       "8. 'Frost'\n",
       "9. 'Area'\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       "[1] \"state.region\" \"Population\"   \"Income\"       \"Illiteracy\"   \"Life.Exp\"    \n",
       "[6] \"Murder\"       \"HS.Grad\"      \"Frost\"        \"Area\"        "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "names(states)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "74470c23-0b46-44c9-b073-2be40dce439b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        Group.1        x\n",
      "1     Northeast 1.000000\n",
      "2         South 1.737500\n",
      "3 North Central 0.700000\n",
      "4          West 1.023077\n"
     ]
    }
   ],
   "source": [
    "means <- aggregate(states$Illiteracy,by=list(state.region),FUN=mean)\n",
    "print(means)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "96d16cca-d114-4b5a-9ce9-56af13696a22",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        Group.1        x\n",
      "3 North Central 0.700000\n",
      "1     Northeast 1.000000\n",
      "4          West 1.023077\n",
      "2         South 1.737500\n"
     ]
    }
   ],
   "source": [
    "means <- means[order(means$x),]\n",
    "print(means) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6302ca8d-c841-4a3f-8411-d7f88b96d0b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAANlBMVEX9/v0AAABMTUxnaGd7\ne3uLjIuZmpmmpqaxsrG7vLu+vr7FxsXOz87X2Nff4N/n6Ofu7+79/v3LsPxHAAAAEnRSTlP/\n/////////////////////wDiv78SAAAACXBIWXMAABJ0AAASdAHeZh94AAAdS0lEQVR4nO3d\ngVZiSbJA0bkgok9E+P+ffXBBEhBozY68Zth7rzVT2CJGE3kUsKr6f1vgX/vfbw8Af4GQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQ\nIICQIICQIICQog17H+PFj/Fy5Y3c/WW7fQ4Y87H2n+GvEVK0MZ638eJbk5DeZ1U3+QPtP8Pf\nI6RoYzxP48WnJiFV3uTPPzs/IKRoQ6lniA3p8n0NCennhBRtdwoXw7DaXVqNlw5ncrOcDbPl\n4anT9m3/j+eHt/ZXWO2+dT2vr27kzi9DqfP8NvfPy+bD8urGd1eZ7749rsYrzI63PTvL5NaH\n3fkMPCSkaLsz+LrrYnfpebw0nsiP2eF0vu/feDoe1fGt3S/Lw1vryxu580s55he3ua9gfER5\nceOfV1mOw6zGm16Nb5bP8+XD7nwGHhJStH1Ii/HL/2xYfIZ0PJHjP979s6fNdrvLZ7E9hTEc\n2ju7kTu/lGN+fpvHf/x2deOfV9k19H74J9vt4jyMWx925zPwkJCi7b+3vO4P6+7ovq4PJ/Jw\nTjfP48t58+Or44d37c/pavyGceN50KNfLm5z/w/3JVze+O4qs/V2s/tuMz+952N84+zzfP2w\n25+Bh4QUbR/S7rS+bF92h/MY0u67wObwvsXFFQ//v3/ItflxSJe3OXw+cju/geNztc38ZVfJ\ny+Eh3e6bzuvF1b5+2O3PwENCijY+25ntvuzPdw+J1qeTefEo6eNt+TRcHNrbr8z9wy9ntzkc\nD/3FjV/c5mY4Pt48XfHeh93+DDwkpGhjSPun9vtnPV9C2r/1Nj97IyCk85u5uPHL2xy/P61u\nPhe7PdPlZ+AhIUUbQ3obXw17+wzp/BXn8fc7zJ9f18O/C2l26wMub/zyNlf7l+eeLh/L3fyw\n25+Bh4QUbQzp8LvsPrblOVI5vvPjG/8ypIvbPH34xY0/nT9HGsNYXT1Mu/lhtz8DDwkp2hjQ\n/mTuXx37OD6Y253f9/GXp9Mx/VffkTZXt3l9M4cbv3jVbnydYdi/CvL189yY6ctn4CEhRTuc\nxf2hXW7PHyUdvI/fJ3bvWc1qQ5odb/r8Nk8ffnnjp6uML9Qdvk2evdTw6MO+fAYeElK0w1nc\nPYYaVqe3xjeH4/F8P16ejQf05yHtf+T0dHWbpw+/vPH32dlVDt8mL1/Jvv1hNz8DDwkp2uFs\nbo5f+z9P6vib3haHpxzr3UGdPe9/2LSoCWn/3OX5+jZPH35x4+Nvlvu8yuElhctnPXc+7NZn\n4CEh/Ye8+olQM0L671jPPEprRkj/FYenO+t/viI1hPRf8fW1bwIJ6b9i/+eO/C7uZoQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYTEpIaORP57CYlJ\nDf/XDSGRl5AggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAg\ngJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAg\ngJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAg\ngJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJBuep0P\nw2IVMwr/BUK6uj/GKZ6G0TJwIP42IV3dH/splsNys91+LIfXyJH4y4R0dX/sp5gNm/3lzTCP\nG4i/TUhX98fw+X9nv8I/EdLV/bGf4vkzpFnUOPx1Qrq6P4bFy+tqeNtd3Cy92sB3Cenq/jga\nL842kSPxlwnpynr9+rpYjC85LHXEdwkJAggJAggJAgjpAT9H4ruE9MDXkIZzEZ+CP0JI1YRE\nIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFd3R/Dt1/hFhKFkC69CokaQrqynj1985pCohDS\ntfV3/zifkCiE9MXrsP7W9YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI\n1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQip\nmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFV\nExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRq\nQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRN\nSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJ\niUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUh\nUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYk\nCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YRE\nIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAo\nhFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKF\nkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQ\nUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRC\nqiYkCiFVExKFkKoJiUJI1YREIaRqQqIQUjUhUQipmpAohFRNSBRCqiYkCiFVExKFkKoJiUJI\n195fFsPeYvn++IpCohDSpc18KJ4eXlVIFEK6tBxmb+vx0sdqNiwfXVVIFEK6NBvWp8vrYfbo\nqkKiENLV/THce+PrVSs/BX+RkC75jtSboScPxvztfIouQto9R1p9jJc8R+pDRyf00RHtaMwu\nQto+nX39mW8eXVNIk+johArpJ96X48+RZosXP0fqQUcnVEhNCGkSHZ1QITUhpEl0dEKF1ISQ\nJtHRCRVSJT9H6kBHJ1RIlb6G9M0fKqQw5c9f/tGDMX/7XJ7JMWZ/IT2WPqTfXviZHCc0yZhC\nmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOM2UVI\n335VVkiRcpzQJGN2EdKrkH5DjhOaZMwuQtquZ4//ypNCSHFynNAkY/YR0nb9+I/zFUKKk+OE\nJhmzk5B2j+7W/3ylrZAi5TihScbsJaTvElKcHCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhC\nmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRp\ndbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZH\nq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6\nJCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09y\nQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0\nyZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOM\nKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhC\nmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRp\ndbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZH\nq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6\nJCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09y\nQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0\nyZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOM\nKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhC\nmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRp\ndbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZH\nq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOMKaRpdbT6\nJCc0yZhCmlZHq09yQpOMKaRpdbT6JCc0yZhCmlZHq09yQpOM+WdCGnryYP7fXvgZYwb6OyH9\n9j15JsfqjRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs3piRhNRAjtUbM5KQGsixemNG\nElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1kGP1xowkpAZyrN6YkYTUQI7VGzOS\nkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamBHKs3ZiQhNZBj9caMJKQGcqzemJGE\n1ECO1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSk\nBnKs3piRhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1\nkGP1xowkpAZyrN6YkYTUQI7VGzOSkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamB\nHKs3ZiQhNZBj9caMJKQGcqzemJGE1ECO1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3k\nWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs3piRhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH\n6o0ZqaeQXufDsFg9vo6Q4hgzUBchDeMUT8No+fiqd9/x2/fkmRyrN2akfkJaDsvNdvuxHF4f\nXvXuO377njyTY/XGjNRPSLNhs7+8GeYPr3r3Hb99T57JsXpjRuonpGE4e+P+Ve++47fvyTM5\nVm/MSP2E9PwZ0uzhVe++47fvyTM5Vm/MSJ2EtHh5XQ1vu4ub5eNXG4QUx5iBOgnpYLw42zy8\n6t13/PY9eSbH6o0ZqYuQtuv16+tiMb7ksHzYkZACGTNQHyF9n5DiGDOQkBrIsXpjRhJSAzlW\nb8xI/YXk50hTMWagDCEN5+5+2G/fk2dyrN6YkfoL6TEhxTFmICE1kGP1xowkpAZyrN6YkToJ\n6f1lMT4DWizfH19RSHGMGaiLkDbzs1cTnh5eVUhxjBmoi5CWw+xtPV76WM38ptWpGDNQFyHN\nhvXp8tofo5iKMQN1EdLFT4f8QHYqxgzURUi+I/0KYwbqIqTdc6TVx3jJc6QJGTNQFyF9/k1c\no7k/2DcRYwbqI6Tt+3L8OdJs8eLnSJMxZqBOQvo2IcUxZiAhNZBj9caMJKQGcqzemJGE1ECO\n1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs\n3piRhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1kGP1\nxowkpAZyrN6YkYTUQI7VGzOSkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamBHKs3\nZiQhNZBj9caMJKQGcqzemJGE1ECO1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3kWL0x\nIwmpgRyrN2YkITWQY/XGjCSkBnKs3piRhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH6o0Z\nSUgN5Fi9MSMJqYEcqzdmJCE1kGP1xowkpAZyrN6YkYTUQI7VGzOSkBrIsXpjRhJSAzlWb8xI\nQmogx+qNGUlIDeRYvTEjCamBHKs3ZiQhNZBj9caMJKQGcqzemJGE1ECO1RszkpAayLF6Y0YS\nUgM5Vm/MSEJqIMfqjRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs3piRhNRAjtUbM5KQ\nGsixemNGElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1kGP1xowkpAZyrN6YkYTU\nQI7VGzOSkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamBHKs3ZiQhNZBj9caMJKQG\ncqzemJGE1ECO1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3kWL0xIwmpgRyrN2YkITWQ\nY/XGjCSkBnKs3piRhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEc\nqzdmJCE1kGP1xowkpAZyrN6YkYTUQI7VGzOSkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRY\nvTEjCamBHKs3ZiQhNZBj9caMJKQGcqzemJGE1ECO1RszkpAayLF6Y0YSUgM5Vm/MSEJqIMfq\njRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs3piRhNRAjtUbM5KQGsixemNGElIDOVZv\nzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1kGP1xowkpAZyrN6YkYTUQI7VGzOSkBrIsXpj\nRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamBHKs3ZiQhNZBj9caMJKQGcqzemJGE1ECO1Rsz\nkpAayLF6Y0YSUgM5Vm/MSEJqIMfqjRlJSA3kWL0xIwmpgRyrN2YkITWQY/XGjCSkBnKs3piR\nhNRAjtUbM5KQGsixemNGElIDOVZvzEhCaiDH6o0ZSUgN5Fi9MSMJqYEcqzdmJCE1kGP1xowk\npAZyrN6YkYTUQI7VGzOSkBrIsXpjRhJSAzlWb8xIQmogx+qNGUlIDeRYvTEjCamBHKs3ZiQh\nNZBj9caMJKQGcqzemJGE1ECO1RszkpAayLF6Y0YSUgM5Vm/MSJ2E9P6yGPYWy/fHVxRSHGMG\n6iKkzXwonh5eVUhxjBmoi5CWw+xtPV76WM2G5aOrCimOMQN1EdJsWJ8ur4fZo6sKKY4xA3UR\n0jDce+PrVe++47fvyTM5Vm/MSF2E5DvSrzBmoC5C2j1HWn2MlzxHmpAxA3UR0vbp7FW7+ebR\nNYUUx5iB+ghp+74cf440W7z4OdJkjBmok5C+TUhxjBlISA3kWL0xIwmpgRyrN2ak/kLyc6Sp\nGDNQhpCGc/c/rCOP/u06YsxA96f8uQke2sHfJyQIICQIMMEf7IO/b4I/2Ad/3wR/sA/+vgn+\nGAX8fRP8wT74+3xHggAT/ME++Psm+IN98PdN8Af74O/zOxsggJAggJAggJAggJAggJAggJAg\ngJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAgQDchDcPq88LN\n96/uvG/9PBueVw9u+M77Yv6a5dqp73n0LxJrNox/GeFmGD4v3Pvrcqeb6ZbNcj4MT6/3r/DT\nu7iRjkKafV649e75cPt9y+NfUflx73bnd+7iqJCqpr7n3rANLIbxryNcDcevBe/D4tdnumEz\nOyx4du/vIP3pXdxKRyENL8cLt999830vw2x3DDa7X+6VdO8ujgqpZuoHNxcx1Le8DuNX+edh\nefgLp49v/+pMNzwPT7vNfjzd/Vuxf3oXt9JRSPPh43Dh9rtvve/jM6Dn4fnu7f7sn/9M1dSP\nbi5iqG95P9xju0d4h2+qz8OdvzD3d8/o6YHnvSmEdGUY1ocHF4f75HU+zF8Pb27mw+L4X3Pf\n/W85zF5OH7Q8fj/Ybhavx4+aHT/qYzFe8fSB+1vZPZLZ3dJsWT7N5FOfJjwbZbt62j0NWJ2G\nncRmmG/3X4kWuwd5+y8F8/HEno33CzPdcPm5z+7f4//fORjT6yik4xfF8T56Ov0nNYf9eVye\n7q/xcJ4ehDyd/cdltvvH/eWjxsfWL9vzD1zuHgmOltu4kH42dZnwbJTXw8XXaQ/tbNgeHtAd\nHtSN35fKeL8z01fL4bk8aD+/f7fby5AuD8b0egrp8EVyf7+8DbP1dj0b3vZvPm225Z7bvfE6\nXu3zg86s9u/dPA2r8yuefeD+l7f9jQ9fPnSiqS8mPI0y/rem3sqw01jsP+v+u9H+u9J2/MZ6\nNt7vzHTDLp758T/3fXH/7v/B8XvR9uvBmF5PIR2+Nu4vLMZXklb7Lz7D4bH75/11+uq/3W6v\nl7wYH51s9keiXPH8A88/Kiykn0x9NuHFKKvzNyfyMo69/z40G/8lXq7uwN+Y6ZbV8/5Fu/00\nF/fv52i3D8b0ugppfKBe7p3ri1+fWV7ec6f/XtOtO/p4nY/Vy1NwSD+Y+mzCs1F2DwEX6/XX\nf5+2VsPz8RWH/YPT52F1Md7vzHTH+8tsH8qX+/d6v0LaHu+E/WJ/EtLi9BxptflWSE+ncxwY\n0venPg+pjLJ92T+h27/+OOVJ+Nh9ZX85fo1/2U3zcTner8x01/rsQaaQHjrcCbsyfhLSy+er\ndu9Xj+bvhPQ8zF9XH9EhfX/qs096NsrOajmf/PnI7pPNj4/l5rce7v7GTNdOn/zm/SukG44P\nd4b5+bONxT+EdPo50tP+Af/i9Lj+XkjjL/EhfXvq6wk/zqa4Cq293TDHZ+fzYRz6fLxfmuna\n4vhC3PjDruv7911INxzvhJfxgcWX12d2v3xsb9xfz+PT0P3PjLbHj9o9bV5chlQ+cLt/TroO\nf470/akvJjyNMj+8gDf/vP5ElsPT8Rv6y3D4nQNn4/3STNd2rbzuvmm+j18oz+7f+e7tzdP1\nfoW0LXfC7OwJRPmJwe6e27fy9f46PtM4/F67wxvlgf3+/88/8PN35p09c5146jLh2Shvp0vz\n4e5vHY33Nny+lrk7rvvTeT7eL830xefd9FTGO/2Ya3G9XyFty52wOlx4nV38DHv7Pr9zf73t\n7s6nt+Mbr7u79fnyK9T5B+6/gw1P7+cPvqae+jTh2SiH30Xwfrr+RNblJ627S4dXbcp4vzPT\nV/vf3X9a8On+3b8W8vxlv0KC5IQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQE\nAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAYQEAf4fSe/LotvHiJsAAAAASUVO\nRK5CYII=",
      "text/plain": [
       "Plot with title \"Mean Illiteracy rate\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "barplot(means$x,names.arg=means$Group.1)\n",
    "title(\"Mean Illiteracy rate\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0dc1149b-6943-454f-a38e-4774e4147db8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAANlBMVEX9/v0AAABMTUxnaGd7\ne3uLjIuZmpmmpqaxsrG7vLu+vr7FxsXOz87X2Nff4N/n6Ofu7+79/v3LsPxHAAAAEnRSTlP/\n/////////////////////wDiv78SAAAACXBIWXMAABJ0AAASdAHeZh94AAAbp0lEQVR4nO3d\niXbiOrqA0bYZEm4Shvd/2WsbkwBSQpTzK1DR3qtXAUGWqMJf2Qx1+n8H4D/7370fAPwFQoIA\nQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIA\nQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIA\nQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQoIAQvpr1lWG/ocNf7zK\nP0VIf8tb31UY+h82/PEq/xgh/S1d9+39tmDof9jwx6v8Y4T0twjpToT0l3RHx2u7Rfc0XNs/\n9V3/tDsOeFkNdyzGWxdDD5tFt3g7HDZ9t3w7jjzfbBzxuuy69fZijXev6+EH69f3x/BxeTZ4\n/7TouuXrZ5t8/Qgen5D+kos6xv32cNj1x59Ne+dyHjDcuhh6/Pnu6WPkxWbD5fGubpsL6TTr\n6vQYPi4/Bp8mfMpvcuMRPD4h/SUXdQxeDod5d+z64YebYYfdHw5P4w58PXQccrZzn2/2MaJb\nZ0Javd+7mgcf3i8/Bp8m7F6zm9x4BI9PSH/L2W48NjO3s19PUQ3HqN3HoMuhw8BusZ0urjcb\nR/TD/r+et7jI6PA63NwMY5/nSC5Cer8YJuy3h/1w4FlkN7nxCB6fkP6Ws914egEy/N2/P95e\nXQ86G/p2cZFsNk+2z4Y07Oqb6crTdMD6JKTVPMXieZfd5MYjeHxC+lvOduN5P3w/bZp+vnt5\nWnZJSMnF5Wb5kR8r7o9T3572602+eASPT0h/y9VufLY/jrdfFmc3vhfS5yOvVswc6D7b5pNN\nvngEj09If8t1SP35fvgyvgpZb7a39/g+28rNI9Lnh69Pj0j9J0P7fySgEyH9Ldchza9Njhbz\njdshXWz2dUir9AXPWMnb5eDl+WukzCY3HsHjE9LfMu6F+8PHzj4chPq36WL5/sOzI9LZ0IuL\ni81yIe3fV7x+C66fPit66y8H33rX7sYjeHxC+lvG/Xf8zPP9qPH++c3bdFgY7nvt30+ezode\nXpxvdh3SacPZ+6e809FlepP87MXNafD7hJt0k9uP4PEJ6W8Zd+Pzg8j0t38378xv8/V+2juv\nhl5enG92HdJpw5NTFsd/L7GbN7wa/Jb9ZsP6kC6dewSPT0h/zOry05z5O26r4+uN7bBb9+vt\n7vjhzOrzVyiXm12FdNrw3eu6//ji3LTI8iUZPH517jTh1Sa3H8HjExIEEBIEEBIEEBIEEBIE\nEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIE\nEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIE\nEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIE\nEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEBIEEFKpjvru/SSXE1Kp7v+o\nTUgNEFJ9QmqAkOoTUgOEVJ+QGiCk+oTUACHVJ6QGCKk+ITVASPUJqQFCqk9IDRBSfUJqgJDq\nE1IDhFSfkBogpPqE1AAh1SekBgipPiE1QEj1CakBQqpPSA0QUn1CaoCQ6hNSA4RUn5AaIKT6\nhNQAIdUnpAYIqT4hNUBI9QmpAUKqT0gNEFJ9QmqAkOoTUgOEVJ+QGiCk+oTUACHVJ6QGCKk+\nITVASPUJqQFCqk9IDRBSfUJqgJDqE1IDhFSfkBogpPqE1AAh1SekBgipPiE1QEj1CakBQqpP\nSA0QUn1CaoCQ6hNSA4RUn5AaIKT6hNQAIdUnpAYIqT4hNUBI9QmpAUKqT0gNEFJ9QmqAkOoT\nUgOEVJ+QGiCk+oTUACHVJ6QGCKk+ITVASPUJqQFCqk9IDRBSfUJqgJDqE1IDhFSfkBogpPqE\n1AAh1SekBgipPiE1QEj1CakBQqpPSA0QUn1CaoCQ6hNSA4RUn5AaIKT6hNQAIdUnpAYIqT4h\nNUBI9QmpAUKqr5mQ+tVmN1/dbVb9p+O6W38iFwNujv4FL5//ZmZCqu8BdoRSPwup67r1fHXd\nfbH//3sh3X4MQqrvAXaEUj8NaXH6m7tfCIlgD7AjlPppSM/ddrq2Ha4JiVgPsCOU+mlIb93z\n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\nUkIiQ0ilhESGkEoJiQwhlRISGUIqJSQyhFRKSGQIqZSQyBBSKSGRIaRSQiJDSKWERIaQSgmJ\nDCGVEhIZQiolJDKEVEpIZAiplJDIEFIpIZEhpFJCIkNIpYREhpBKCYkMIZUSEhlCKiUkMoRU\nSkhkCKmUkMgQUikhkSGkUkIiQ0ilhESGkEoJiQwhlRISGUIqJSQyhFRKSGQIqZSQyBBSKSGR\nIaRSQiJDSKWERIaQSgmJDCGVEhIZQirV/Xvu/UfWAiFBACFBACFBACFBACFBACFBACFBACFB\nACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFBACFB\nACFBACFBACFBACFBACFBACFBACGVuvf/axgPSUil/r3/60vqE1IxIZESUjEhkRJSMSGRElIx\nIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJS\nMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZES\nUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGR\nElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEh\nkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIx\nIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJSMSGRElIxIZESUjEhkRJS\nMSGRElIxIZESUjEhkRJSMSGRElIxIZH6rZC6bvNx9fNBv/NgvvLS3xohJFK/F1K/f7/6+aDf\neTBfuf0YhETq90LqVu9XPx/0Ow/mK0LiJ34vpFX3crr6+aDfeTBfERI/8Xsh7bv+dHW62D31\nXf+0uxw0//qy6Bavh8Om7xYvh4+f9et5+Pm2w8yLodLTS5u+G04h9+P9693hs+muB+xWXbfe\nTtcnX/9W7v2c8YB+L6TDplufrg5ej7ts/3o5aPr1ebrr7el4cfzZ5jj+Ndl2PNZ1T6vjuMPb\neAa5688G56a7GjDf3AqJn/rFkA7LUxTDL/u+W+8P+/XHexCHj5DGQoZ7jhfL48+65W4anmzb\ndYvhxutc6XqMo+82++Godbo/ne5qwGI4Nm2Xxxmc2vETvxnStlucrh6e5/ceVt3z5aDx17G3\n/fF4sT/9bDkP31xvOx9XplO64dZQ2mZ+q/15vj+Z7nrAdGv7fmJ567dy7+eMB/SbIb3vuIf3\no9NwKra8GnTalS8uuvMzt8ttu2NBz9N7GS/d0xjYcbr9fH8y3fWA3cVKN38r937OeEC/GtJh\ncXwdcjjbX8933K9COhtyue18az8d7pZjFN2H/HTZAULiP/jdkKZjSJ2QhsPM9rCbDzFC4pf9\nbkjDi/1NrZBeh7O6p+mF0GUL2ZAyA4TEf/DLIY3vCfzsNdJ2Hp55jTRv3ffj/87mPqTzXL5A\nu3xoQuLnfjukl/FTn8ONd+0OyUU3v7s9fT3i+l27eeunbjO+1fBx/1RdbrrsACHxH/x2SMPe\nf/tzpENyMWx0HL5Itn2fedfNx63h/tXuMH4Au8tPlx1w9f7gF7+Vez9nPKBfD2nYiaer87cT\nutw3Gw7JxbB7T98+6HfJth+HkOXxc6r8/RcX2QmOlyvfbOAHfj2kw2a+evy+3D4d9MmbDbuh\nk9Np4Pm2HzO/nr4WO32Vrlu/pfO8v1meDpgvd+uu+/qfJAmJ1D/yL2Rvv3L5PUIiJaRiQiIl\npGJCIiWkYkIiJaRiQiL1j4T0SIRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjF\nhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpI\nxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERK\nSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRE\nSkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWE\nREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjFhERKSMWEREpIxYRESkjF\nhERKSMWEREpIxYRESkjFhERKSMWEREpIxTpICQkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkC\nCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCAkCCKnUvf9zNdzTp7uFkEp9/mdp\n+T+/vpDiPOxT2cLy915fSHEe9qlsYfl7ry+kOA/7VLaw/L3XF1Kch30qW1j+3usLKc7DPpUt\nLH/v9YUU52GfyhaWv/f6QorzsE9lC8vfe30hxXnYp7KF5e+9vpDiPOxT2cLy915fSHEe9qls\nYfl7ry+kOA/7VLaw/L3XFxJUJSQIICQIICQIICQIICQIICQIICQIICQIICQIICQIICQIIKQS\nb8+r6T8TuHp6s3xr63+9vJC+b784+09uLi3f1Pq3lhfS9z11/ct2urZ77bsny7e0/q3lhfR9\nfbd9v77tesu3tP6t5YX0fRf/CfUv/nvqlv+D699aXkjf9+B/J/7t5e+9viNSnOE0+XU3XbvX\nWXrDy997/VvLC6nA8uyNm8Xe8k2tf2N5IZV4e5o+SuhXz/f5JKPp5e+9/tfLCwkCCAkCCIlv\n2q+7bvl6vH6Ht79PNn232Nxt9cNnv3ch8T37/vhNs+nGPULarrp+c3i+11eU3gmJ/+KpG44D\n+00/7cN3CGk7FfTUrfeH3ar79WNSdym5X0j/jFtPZWX9ccVdv9jdJaT1+OHN0/Gj0H23+O3l\n33oh/RGb+4Z0WnG/XN7xK0L3O7Xcr7rl7vO1hfTv2Pb3fGmw6E6fQi6W9wvp5XhOd4evKA1r\nd93LQUh/wPYO38x5t+nW87Vdt7zLqd36VPJ+fZ8/iN2yW+2F9Adszr45+eue3veg1zucWU7v\nGs5Xu7sckEbPXf8qJP6b7ep0bbe+x+dIT6d8+vsdmLeLT/4SERKUWAsJqhESBBASBBASBBAS\nBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBAS\nBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBAS\nBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBAS\nBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBPh/B5CI\nKx/a4osAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"treatment outcome\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(las=2,font=2)\n",
    "par(mai=c(1,2.5,1,0))\n",
    "plot(Arthritis$Improved,\n",
    "     main='treatment outcome',\n",
    "     cex.names=1.2,\n",
    "     names.arg = c(\"No Imporvement\",\"Some Improvement\",\"Marked Improvement\"),\n",
    "     horiz=TRUE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ba4d8fac-2afa-459c-a1c9-81fd6f524755",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with(Arthritis,{\n",
    "    counts <- table(Treatment,Improved)\n",
    "    spine(counts,main=\"spinogram example\")\n",
    "})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fe8c2f2-2b5d-4d74-be37-046a1b2f599e",
   "metadata": {},
   "source": [
    "### 饼状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "04fcb459-7f05-444d-8660-e8fa91edc0fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "options(repos = c(CRAN = \"https://mirrors.aliyun.com/CRAN/\"))\n",
    "# install.packages(\"plotrix\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "9d156014-113a-42d7-bfe2-16a36043d5ba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAsVBMVEX9/v0AAAAAMXwAOIwA\nPZoATR8AUswAUyEAU9AAVtkAYycAZv8AezEAjDgAjzkAlzwApkMAp0IArUUAskcAtEgAuksA\nzFIA0FMA/2ZCAFNMTUxPAGNZAHBnaGd7e3uLjIuMAACZAMCZmpmaAACjAMyjzACmpqanAACt\n2OaxsrG7vLvFxsXMAADMAP/M/wDOz87QAADX2Nff4N/g///m5vrn6Ofu7+79/v3/AAD/5OH/\n//+SUFn0AAAAO3RSTlP/////////////////////////////////////////////////////\n////////////////////AP///1LD0mIAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACAASURBVHic\n7d2Jeuu8Yl7hoEPaJh3SIempGkmt+h/12G7i2qnFff77v7ByJjiJpPiBAMi1nmdv2xItS4Rf\nARos/UVCRKv7C99ngGgPAYlIEJCIBAGJSBCQiAQBiUgQkIgEAYlIEJCIBAGJSBCQiAQBiUgQ\nkIgEAYlIEJCIBAGJSBCQiAQBiUgQkIgEAYlIEJCIBAGJSBCQiAQBiUgQkIgEAYlIEJCIBAGJ\nSBCQiAQBiUgQkIgEAYlIEJCIBEUCyRjjfovJDW4TP2E3udxV5bfeZp3MK92mzoGTgDR7g6+T\ng1EPM5e7Kv/WcgMHkMpT3nywIoE0nWBMJk7CydVnpK3dVeUGDnapu1N+HpBmnwSQmoDULWhI\nX9d0f9y+k3K/pP89bub0nnxfzOmzOPTnZsw9Seo9dz+Z0/1Rn8L0FknyebV+yNvJnLOTTr7T\nbzOXr+Lgr7O5mLwtLrafXO2qs7nm/5/S/6/mnH9rtUHrZHrnwjoD5QnbZ6F9bPbF+T2pTrk+\nB815y7e/PXoXrfklW1XIkD6K3WG+Gkin7Otrfuhnc0C2g4sdlH9pTvXgT2+R3Isf8p1vUPwO\nfKS7t/WzT9UP3TckJ7vqLfss+/39yY5/60KqT6Z/LqwzUJ6wfRbaxxYn896FZJ23JN/k3L1o\n1i/ZqkKGdMp2frorzg2kW/KZ//9RHXp5ZDvoo9ziLdsh79lwlU1v8Zlvcc9Grtj4PR/Fc/Yd\nH6Y6OP1V2PvSztWu+sp+7T/za77v7BSroWx+5nvppnsurDNQnbB1FjrHZofWvyn1B+u85f8/\nLt2LZv2SrSpkSPlVTP1pMe1b/xcTfj5S1/KAS7772uMyscU1v3p7XIur2XoZ2f6xX0n78D3m\nbFed0t/XbCK5p7+6p6QLqX8y9bmwzkB1wtZZaB9rr/975yD/4lqdsul+73siKGRI+RLhkq+f\nrX1k/W/vtOq/1rJi/hbdjdPRer9d7J9yAEj1B+muuqW/r+kNpfQ6/5KuJYZ+3ccHrDoDAyfc\nP3YQUve8dU/Z+iVbVciQkvezMdaifVNI12eDuMec7ap0OZbeREqXdT/VDdsNIfXOW++iNb9k\nqwoaUpL8vJ2atcYsSO3vn71Fd+N0LXL5eBwd0uAW3Y2ndlV61D2djs7p/+axEFL3R0+zbp9k\n/7wNXLTql2xVgUNKL2V3ZNuQesv6n9Z3T29RLJ2rhX+S9H/WcSA52lXZ0uqe30zqLC6GIdm3\nkX6ag7tnoX/s6Cmbcg1n30ZqXbSf9WMbMqRzdtG/W/faJd1x693RdCtHoWh6i+p+oM4dPqfs\nZ98PBsnRrkpPKF3TZXfcvSUzINn32t1s2e2z0D924JSt89a51676XuuXbFUhQ/ouF7JfTyC1\nb0U98i/Nqb66md6iemTiqz0Gb8Vm2TVXNYjZQ3s7ftqqu12VXd//VA8lFduUGwxCqs+FdQbq\nLZqz0D/WPuXyg3XeiseRLt2LZv2SrSpkSMnP7dR5ZkPShZTusZP9YPxbuotuzdBPb5Fey13s\nH1J9eM8eKX9ko1EN4s91/Uo64BzuqlP+tIbiyQ3FNuUGg5Dqc2GdgWaL+iz0j7VPuToHzXnL\nEd77F635JVtV0JCmsgbg5S2oLIxd5fxcrF/EDQckKgpjV7k7FyZ/1Pa9fh6fOCBRURi7yt25\neCtvDJ0e09u+EJCoKIxd5fBcfGQPzp7vbhzFDYkolIBEJAhIRIKARCQISESCgEQkCEhEgoBE\nJAhIRIKARCQISESCgEQkCEhEgoBEJAhIRIKARCQISESCgEQkCEhEgoBEJAhIRIKARCQISESC\ngEQkCEhEgoBEJAhIRIKARCQISESCgEQkCEhEgoBEJAhIRIKARCQISESCgEQkCEhEgoBEJAhI\nRIKARCQISESCgEQkCEhEgoBEJAhIRIKARCQISESCgEQkCEhEgoBEJAhIRIKARCQISESCgEQk\nCEhEgmKBZJqPpnMQOe/p3jdprQOrrw81QPFCOtQwee7Z3jfNVwUg0z7wIEUL6VjD5Lkne9/6\n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\nAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"pie chart from a table\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mfrow=c(2,2))\n",
    "slices <- c(10,12,4,16,8)\n",
    "lbls <- c(\"US\",\"UK\",\"Australia\",\"Germany\",\"France\")\n",
    "pie(slices,labels=lbls,main=\"simple pie chart\")\n",
    "\n",
    "pct = round(slices/sum(slices)*100)\n",
    "lbls2 <- paste(lbls,\" \",pct,\"%\",sep=\"\")\n",
    "pie(slices,labels=lbls2,col=rainbow(length(lbls2)),main=\"pie chart with percenttages\")\n",
    "library(plotrix)\n",
    "pie3D(slices,labels=lbls,explode=0.1,labelcex=1,main=\"3D pie chart\")\n",
    "\n",
    "mytable <- table(state.region)\n",
    "lbls3 <- paste(names(mytable),\"\\n\",mytable,sep=\"\")\n",
    "pie(mytable,labels=lbls3,main=\"pie chart from a table\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "27ec1ee2-a756-44d9-953d-6a57dcc88036",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAUVBMVEX9/v0AAAAAUswAZv8A\nzFIA/2ZMTUxnaGd7e3uLjIuZmpmjAMyjzACmpqaxsrG7vLvFxsXMAADMAP/M/wDOz87X2Nff\n4N/n6Ofu7+79/v3/AAAS+vyzAAAAG3RSTlP/////////////////////////////////AP+Z\nEhnKAAAACXBIWXMAABJ0AAASdAHeZh94AAAer0lEQVR4nO3d62KiSoNG4amebzz1NnFma5Tc\n/4UOJxEQEPStI+v50VFa4yG1uqC0zX9lAD72X77vAJACQgIECAkQICRAgJAAAUICBAgJECAk\nQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECA\nkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJBs\nO++M2X5Xp01td7xOXSW/xKxvPfNyh1nfDB8hJMuOdTrlGfNwnriONKTLZt43w0cIya7zPZxj\nca4VkrmMX0ka0txvho8Qkl0HY/a37GTMpjhXD+rbeVtv+AwhhYOQ7DruN7esGc2PQb3t7NwV\n27/zTYdr1r7Y7bgxm97h1O2YX253bi532TVXy077fMu2ukJ+6ro19Y4lKVlHSC7k47k84n8M\n6XO9pZJv35cDfnNtXey6ed4JvG+77ykeW1fbtfcai6Ty4gjJEUKyr2iknJdaId3ycf64xOPI\nadu6WN1MZyfwvq2czx5XK6L8zru5ldHum787EZIjhGTfvlmkaw3pzuguasmnkfOmCSS7h3HL\nj7JOzQXzbZuf7Lariquvdqxayyeg1nxmqqw4RnKEkOwr54R9faq1sXOJMpZ6h6/6u7y/uoR9\nc8F9Vdpt+3WtLlee67bShPQUL+whJPtu5RRSvCY7EdL9xDZrpfC0bzeUTGvr9XTcmebat4Gr\nwBJCcuLWLqS1odYKyWTPIZnnC3bO1V9P29ble98SlhGSXcd9NZ30Rvfzqt3t6WKbgQKmQioW\nFraH7x9C8oGQ7NpVhyrXav/sMah3/deRynfjnZsVt6w5Hhr6do9jpPvVs8dLU4TkAyHZ9VUu\ns1131Ss/90F92XcXtU212lCs2j0OpU7Vmtzp/ka9wtOq3f3qj3NDM9LN9sMEIVnWvPBTv8Gh\n0Z5teusKpvs6UvsV2WZbe+2i+lrFWsTYCak4f7T/ONeOkCy7vxXhvtc11FH/LQp1BPc3vLYz\nuPTe2ZA9vl7uLZblNSEdTHtKgyWEZFv1hrlmLaG0O3Z3topRf9q2L1ZfNT/u2Z+fvt19W2/V\n7idvZnP4uZYHWo9Do31nXQN2EFIIWBCIHiGFgJCiR0ghIKToEVIICCl6hBQCQooeIQEChAQI\nEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBAS\nIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBA\nSIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiA\nACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAh\nAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEC\nhAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQE\nCBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQ\nEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg\nQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBI\ngAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAA\nIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEB\nAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKE\nBAgQEiCw2pCMaZ+ozp2NOfq7R4gZIT1Cum3MzuM9QswI6RHSzmw83iFEjZCakL6Nufq8R4gZ\nId1D+jHm7PMOIWqEdA9py0ID3kdIdUgHY24+7w/iRkh1SLm9z/uDuBFSHdLmy5iTzzuEqBFS\n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\nACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAh\nAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEC\nhAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQE\nCBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQ\nEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg\nQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBI\ngAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAA\nIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEB\nAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKE\nBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQI\nEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBAS\nIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBA\nSIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg8P/p\n6AkMbrnSlAAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"3D pie chart\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pie3D(slices,labels=lbls,explode=0.1,labelcex=1,main=\"3D pie chart\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "e29350bb-7498-4f5b-b82e-b9b46795f83b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAQlBMVEX9/v0AAAAAZv8A/2ZM\nTUxnaGd7e3uLjIuZmpmmpqaxsrG7vLvFxsXMAP/M/wDOz87X2Nff4N/n6Ofu7+79/v3/AAAo\n4eDQAAAAFnRSTlP//////////////////////////wD/v/TSGwAAAAlwSFlzAAASdAAAEnQB\n3mYfeAAAHpZJREFUeJzt3elCq8q6RuFTa6VV90402fd/qwcIIfTtWw1V4/lhg5oZA8MPCDr/\n7wlgs//zfQeAGBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBI\ngAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAA\nIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEB\nAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKE\nBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQI\nEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBAS\nIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBA\nSIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiA\nACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAh\nAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEC\nhAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQE\nCBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQ\nEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg\n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\nQx35vtsoEVIw2iVNh8Q4CgchhaM9lEwrJENG4SKkkJgFIZFRUAgpKM2hZKqQOh0xjgJDSIEx\ns0Iio9AQUmjqQ8nUQjKMo5ARUnhqKZm+kMgoQIQUItMKqd4R4yhIhBSkaiiZMiRDRmEjpECZ\n3pDIKFSEFKpyKJkiJMM4Chwhhcu8QyoHEhkFjJACVgwlk4VkGEehI6SgZSm9QiKjwBFS4LKS\n8o583w1MIKTQmZzvO4EphBQ+MtoBQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAg\nJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRA\ngJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQ\nAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAAB\nQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUIC\nBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQI\nCRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQ\nICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAk\nQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECA\nkAABQgIE/h/hfohtMepONwAAAABJRU5ErkJggg==",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fan.plot(slices,labels=lbls,main=\"fan plot\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39403c4c-529c-467a-a14a-797603580270",
   "metadata": {},
   "source": [
    "### 直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "d4660728-a871-44cf-ab23-92e0631e9cbe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAPFBMVEX9/v0AAAAAAP9MTUxn\naGd7e3uLjIuZmpmmpqaxsrG7vLvFxsXOz87T09PX2Nff4N/n6Ofu7+79/v3/AAB8jedRAAAA\nFHRSTlP///////////////////////8A//Fp9e4AAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACAA\nSURBVHic7Z2Leqsst0Z/mqTn3dX63f+97mjUoAICTgR0jGetNjWCyOuIx+j/GgDYzP9yNwDg\nCCASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAA\nIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiAS\ngACIBCAAIgEIgEgAApQnklJKezH+NfKWYJrvF6VS1Fsfy/72GVUvtU9i43TezNNsee2H/t3j\nvbz/GVsYML9uahPp5yI04zpv96kgUoe8SEkSG6bTV25s9Xc/9PfSxqsuf5OSltZGU7pI1neF\nJ/krX2uVbBdpQ43h9JWbptF69FhnKfXZfCn1nrRFiJSq0jo5iki/r2oQ6fWqulEuSVtUukiP\nv37abnn71/3Zv/9zU+r28xjzvg389jeM/nNVt6b5126ude/ff/+9qctn8++mLt/ahMYanpU2\npvHb9dXb+IH2nFbtfL8++rTRO3PRu2OPNtqexrwT2pcfF3X9btIldlWv3c/Wh1d17aYzVK5P\nf2zRbZLSMuH3cXD7496i62ejtzyMKkT6enSY+nnG8v549dGO2PaYug6j37eIX5ufsUQ/6D6w\nG/Ds6mcNC5Gm4w8DbrNpVU4///+aSWcuenfo0Ubb0+g64TLts26Y+kqX2Ec7divfbzvGx1yk\ncfpDi14na57vPr+mmQY6Lf6ptzyMIkUa6Wf00vbevaevo2b/7rP+93frloOvtkv+bmOX3Lv7\n/sH11b/RDnrrNpjf2gHXYTJ6DWr20TUdv63zr83+azqtuvnu5uq9WxfMu2I2oOvRj3bZ+uxE\n+Bw6ZCLSXzc8XWI/bdHvzqx/vaH6pt04/Qe372msV+0z9DHJW+fN2Ia2L9ppaS0PogqRHp8V\nw7vtr7fuI+OnO9b2OrzuNxQmVQ1HEsafw3t6DXORpuOrYczX6bTq5rVbpP9e/xm6Yjag69Gb\n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\nQmCC",
      "text/plain": [
       "Plot with title \"histogram with normal curve and box\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mfrow=c(2,2))\n",
    "with(mtcars,{\n",
    "    hist(mpg)\n",
    "    \n",
    "    hist(mpg,breaks=12,col=\"red\",xlab=\"miles per gallon\",main=\"colored histogram with 12 bins\")\n",
    "    \n",
    "    hist(mpg,freq=FALSE,breaks=12,col=\"red\",xlab=\"miles per gallon\",main=\"histogram,rug plot,density curve\")\n",
    "    rug(jitter(mpg))#轴须图说明频数，竖杠表示相应的数字出现了，如果你看到一片黑色，说明此处数据很密集。\n",
    "    lines(density(mpg),col=\"blue\",lwd=2)\n",
    "\n",
    "    x<-mpg\n",
    "    h<<-hist(x,breaks=12,col=\"red\",xlab=\"miles per gallon\",main=\"histogram with normal curve and box\")\n",
    "    xfit <- seq(min(x),max(x),length=40)\n",
    "    yfit <- dnorm(xfit,mean=mean(x),sd=sd(x))\n",
    "    yfit <- yfit*diff(h$mids[1:2])*length(x)\n",
    "    lines(xfit,yfit,col=\"blue\",lwd=2)\n",
    "    box()\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "95a87981-df7c-4e05-bc8d-4317f5f207d5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".list-inline {list-style: none; margin:0; padding: 0}\n",
       ".list-inline>li {display: inline-block}\n",
       ".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n",
       "</style>\n",
       "<ol class=list-inline><li>1.01171365456656</li><li>1.01196699174121</li><li>1.01310639155097</li></ol>\n"
      ],
      "text/latex": [
       "\\begin{enumerate*}\n",
       "\\item 1.01171365456656\n",
       "\\item 1.01196699174121\n",
       "\\item 1.01310639155097\n",
       "\\end{enumerate*}\n"
      ],
      "text/markdown": [
       "1. 1.01171365456656\n",
       "2. 1.01196699174121\n",
       "3. 1.01310639155097\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       "[1] 1.011714 1.011967 1.013106"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "jitter(c(rep(1, 3)))#Add a small amount of noise to a numeric vector.根据不同的amount参数选择不同的生成方式，默认为均匀分布中生成噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "943a5e3f-94c2-4c33-8a78-0f1351e0f4ef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " [1] 11 13 15 17 19 21 23 25 27 29 31 33\n"
     ]
    }
   ],
   "source": [
    "print(h$mid)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a06e09c-d276-495f-ac03-d604a114424e",
   "metadata": {},
   "source": [
    "- 每个点的频数 = 概率密度 x 样本总数\n",
    "- 每个箱的频数 = 概率密度x 箱子的宽度 x 样本总数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5011214a-51d5-4174-a3d1-80b4a24da38a",
   "metadata": {},
   "source": [
    "### 核密度图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c691cc28-678e-4a9e-b308-190e9faced5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ntuo8qw4ztfGlJnmojrIicTt9/TAPI9LVnGqRUpOVrzdz2TagQRIXoo1UcZiRsTVm9XMqjtJy\nq591tH6YhxHJpM0NYRNjb8h3r/5QlWIjVR9mdVtQ3VHmzb/n+mEeRqT7887K/TeNFPb5HtrD\nTM31oT3Kk8ldZOuHeRiRHgGJdLUNEd1hlm2m6va6qqO8mNsDkeQJRaQ8si0Q3WFek6jqcGiO\nsmrJIZI8gYhURNWD27SH+Tjbtp3mKGN7FAGR5Kl/xkjxvrec3NEO7WGWPblIdZTnaqTORbZ+\nmAcUyY3g5FoHmuKTe8qH7jAt7diiyijbhzz4CPOAIl2qf6pM57NosucDeRWH6Y4j5fZEAcVR\ndkVaP8wDiqT5YHzePthacZjVmQ1FYvtIiqN0cGaDPE0LOdb7KPZz+yeqOcyoDU1xlBX1Tl89\nzCOKVFRnAm8bywc6rRHNYdpzqeNrNaU5Sku901cP80giAawGIgEIgEgAAiASgACIBCAAIgEI\ngEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACI\nBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIi3HVE/6\nfUw8fb44G3O+u+lrbKK0+LS26iGNk087HdhY56tqMpsM6vE5nj/TRlM9QrD7NEF4BZGWY0zU\nTIykcs9drUxKq8lo2KSmuN4ntzr2lZ2MzWRQjqF4iqgnUtSbhDcQaTll4brUE58TVU8CT01S\nTt7NuSyzV/vF4Npc8qkHB48L4qqQ6XSPT/Ek3eWy9nHgmd4HmG8KIi3HmNjkbuJzosgUTYrE\nPEZSm9G5b+lG5n4r0lA8t24TroiSgUnogkjLKZthVU3zRZnttosmRKpSZmXF4B7GbUyemMjV\nfGlk0vKLP1eHZK6Ldi4/m87cx7NrU1Zv9YIT2Winc3PqfExMMTAJXRBpOWWRO1cNnrbsPTvm\nfVlSc31OFx8ab03Tzqa8uHWk1ddVJ8sKcbITtunlujFn40yL3KLPuU+REjtxbdc/PGjQi+dk\n8nb+3W3gZRJ6INJyyiJXmPgxKdLNdIvhtRnre1vbU55y+lYtVk2einKZ2H6O7o97qVXp2e3R\njHXcSsdswnbus2nXLDgS2ks8dsXtfCqkL0Ck5dgid7V/+RNNu2sSmWcTK//U2ahL+ene+aZ6\n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\nBLAaiAQgACIBCIBIAAIgEoAAiAQgACIBCIBIAAIgEoAAiAQgACIBCIBIAAIgEoAAiAQgACIB\nCIBIAAIgEoAAiAQgACIBCIBIAAIgEoAAiAQgACIBCIBIAAIgEoAAiAQgACIBCIBIAAIgEoAA\niAQgACIBCIBIAAIgEoAAiLQcUz3p9zHx9PnibMz57qavsYnS4tPaqoc0Tj7tdGBjna+qyWwy\nqMfneP5MG031CMHu0wThFURajjFRMzGSyj13tTIprSajYZOa4nqf3OrYV3YyNpNBOYbiKaKe\nSFFvEt5ApOWUhetST3xOVD0JPDVJOXk357LMXu0Xg2tzyaceHDwuiKtCptM9PsWTdJfL2seB\nZ3ofYL4piLQcY2KTu4nPiSJTNCkS8xhJbUbnvqUbmfutSEPx3LpNuCJKBiahCyItp2yGVTXN\nF2W22y6aEKlKmZUVg3sYtzF5YiJX86WRScsv/lwdkrku2rn8bDpzH8+uTVm91QtOZKOdzs2p\n8zExxcAkdEGk5ZRF7lw1eNqy9+yY92VJzfU5XXxovDVNO5vy4taRVl9XnSwrxMlO2KaX68ac\njTMtcos+5z5FSuzEtV3/8KBBL56Tydv5d7eBl0nogUjLKYtcYeLHpEg30y2G12as721tT3nK\n6Vu1WDV5KsplYvs5uj/upValZ7dHM9ZxKx2zCdu5z6Zds+BIaC/x2BW386mQvgCRlmOL3NX+\n5U807a5JZJ5NrPxTZ6Mu5ad755vqpanzkmoqKydzW4n8lTXOvapDXuY+RepXlh/oxlO1VJ9L\n3NtRiPuHARJAJAGqIheX/9XTfaRz08Qqok+jcm4lWeRGx/LscqpFamZ2RiNO5UbTsod2cU69\nzO0ONkyF1osntiPhzyXStqpKP9SigEgCVEXO9vwn+0hlE7AebTjFjw/Ui9yrLsvpuZJBkbJS\noSh+xLFr5X0l0nBo3XjOlS7P+VGbMJr8pzgsiLQcV+TKBta0SHXaPD7l42tz72cTX7P8s0gP\nE/+VvanUFLZC/F2kfjz9FPWI5MskvIBIy6nlMPH0caS86vRnY0db65UU7mSCapm+SElVYbix\n7tTY6iMrX8/vc79u2r3E0xfp2g74dSbhBURaTl1IL+/1T4fqzIYisUUxHz1rwa2kONlxOztQ\ncH/tI2XtuJwVxlVFz9ZY1h21yx/fiDQcT7NE0p6slEyet3RcEGk5TZGLRv/23bl2tsiePzT7\nmrU5bIc/raf/ej5Ux4XO7ou4quJOruv1Mjc2z1ptVKRuPN0moHuP2xHvmMHvjyDScpoil40P\njaVR2eNx6adFqk/GPtvzwLN2NNq9XupzF+xkdcDp0hx26s39i78TyYyK1FlyelTyuCASgACI\nBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgA\nAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAAIgEIgEgAAiASgACIBCAA\nIgEI8P8BKRNRWvmi+/MAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"kernel density of miles per gallon\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "with(mtcars,{\n",
    "    par(mfrow=c(2,1))\n",
    "    d <- density(mpg)\n",
    "    plot(d)\n",
    "    plot(d,main=\"kernel density of miles per gallon\")\n",
    "    polygon(d,col=\"red\",border=\"blue\")\n",
    "    rug(mpg,col=\"brown\")\n",
    "})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "4a0a9e59-56da-4d8a-bc43-28d1cae06e93",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "      mpg             cyl       \n",
       " Min.   :10.40   Min.   :4.000  \n",
       " 1st Qu.:15.43   1st Qu.:4.000  \n",
       " Median :19.20   Median :6.000  \n",
       " Mean   :20.09   Mean   :6.188  \n",
       " 3rd Qu.:22.80   3rd Qu.:8.000  \n",
       " Max.   :33.90   Max.   :8.000  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "summary(mtcars[,1:2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "b975c55c-27b8-44ca-bfbe-786f28ac10df",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Package 'sm', version 2.2-6.0: type help(sm) for summary information\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# install.packages(\"sm\")\n",
    "library(sm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "9339d7f5-1044-4471-9edb-887c90c5910e",
   "metadata": {},
   "outputs": [],
   "source": [
    "cyl.f <- factor(mtcars$cyl,level=c(4,6,8),labels=c(\"4 cylinder\",\"6 cylinder\",\"8 cylinder\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "03e0b78b-802e-4676-be26-d503818d21f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "Plot with title \"main=mpg distribution by car cylinders\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sm.density.compare(mtcars$mpg,mtcars$cyl,xlab=\"miles per gallon\")\n",
    "title(\"main=mpg distribution by car cylinders\")\n",
    "colfill <- c(2:(1+length(levels(cyl.f))))\n",
    "legend(\"topright\",levels(cyl.f),fill=colfill)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "42aa9f82-8c9a-4c5a-ab2a-3ff1cfcf59e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] \"4 cylinder\" \"6 cylinder\" \"8 cylinder\"\n"
     ]
    }
   ],
   "source": [
    "print(levels(cyl.f))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "456d874e-1707-4636-9616-fe14192f74dd",
   "metadata": {},
   "source": [
    "### 箱线图"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c910b282-0d82-4c07-8732-9207b402a934",
   "metadata": {},
   "source": [
    "- `formula:y~A`,将y作为因变量，A作为自变量。\n",
    "- `formula:y~A*B`,将y作为因变量，A和B的组合作为自变量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "b4f37e04-735e-4eba-9770-6de329903ca8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\neff4xur9KlX765znVdo8VnSZvtq3kxsek3dVWp/qc1q1PzV/3w8bvrfczrW7Bfi1/sM6pfXh\nzcMgDR1ZREWq0vV4uVvSRzOtGZ22pZSaQ+q0bv69fdQ+bKc+TljX9+m2pHZydb4s9tX8+HnZ\n0HdJ9y1f59q0S/1a//66wn3OQRGDjiyiIq3Pl4FY2ZLaadc/q3Y4j/WxSp+Xp55m4nmdDre5\n7nx+z9L99f/ZzLO9DPUhbZuft5dD8++S7lu+L5yerb9Kx2aOVd5hkYKOLKIifdXdV2muj67T\nTo+fm9/ah+Z3+CY1A3duHl7nurG5zbKuTUntk9y5KXrVLnj/z9Ddym2uy8Lp2fqvG180dGQR\nFen+57NH5oXQ68N0Py4w552dWbr/8P1w3xwffN0PT55t74/1X84BNsfjW/Y9CnRkWbRI7VPe\nR/MEOrCk+qM5TK9evlo7c+jIMg+Rfixpf/i7pMuz1qFerep/lvRk2cNutfBzpPufdNQQQaSv\n5yVdj4839+PszpI3Nt+H6N1/WD+Ov+tjWh/TR/2spOvCX98Pf6/f/LA06MgiLtIq7ZvXYp6W\ndH3F5nB78eZyML35MW5/vCK0b17V2V1fgF2lqnNq3F3/4fsVod/rXzXrXPqrdvc/6ahBXKT9\n40LB75K27b81P1+vRVSnn09Aj2sU9h/u1yjq9hWf1fcazVbaCxPb9uGv9X9ej8e/6uVCRxZx\nkZozxu1fx9+7+/Xt5qp22p7qnyXV++p61fzHPzQv6FxPQs+32ySflNRsunPV3K6/vWq+ZI/o\n6AeSIuXj8I8bJaE8MTpauEjrRd/mE4MYHS1apPvBOegSpaNFi1R1bkIGTaJ0tGiRALxAJAAH\nEAnAAUQCcACRABxAJAAHEAnAAUQCcACRABxAJAAHEAnAAUQCcACRABxAJAAHEAnAAUQCcACR\nABxAJAAHEAnAAUQCcACRABxAJAAHEAnAAUQCcACRABxAJAAHEAnAgf8DQD1auSAynnoAAAAA\nSUVORK5CYII=",
      "text/plain": [
       "Plot with title \"car mileage data\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mfrow=c(1,2))\n",
    "\n",
    "boxplot(mtcars$mpg~mtcars$cyl,\n",
    "       main=\"car mileage data\",\n",
    "       xlab=\"number of cylinders\",\n",
    "       ylab=\"miles per gallon\")\n",
    "\n",
    "boxplot(mtcars$mpg~mtcars$cyl,\n",
    "        col=\"#FFCC00\",\n",
    "        # notch=TRUE,#凹槽\n",
    "        varwidth = TRUE,#箱线图的宽度和它们各自大小成正比\n",
    "        main=\"car mileage data\",\n",
    "        xlab=\"number of cylinders\",\n",
    "        ylab=\"miles per gallon\"\n",
    "       )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "cadab981-ddcd-448c-882f-764779567a9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "mtcars$cyl.f <- factor(mtcars$cyl,levels=c(4,6,8),labels=c(\"4\",\"6\",\"8\"))\n",
    "mtcars$am.f <- factor(mtcars$am,levels=c(0,1),labels=c(\"auto\",\"standard\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "e810a3d6-344f-485f-8305-8389365fc8c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n+B/C+ovx6072ggAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"mpg distribution by auto type\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "boxplot(mpg~am.f*cyl.f,\n",
    "       data = mtcars,\n",
    "       varwidth=TRUE,\n",
    "       col=c(\"gold\",\"darkgreen\"),\n",
    "       main=\"mpg distribution by auto type\",\n",
    "       xlab=\"auto type\",ylab=\"miles per gallon\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ca9a2cf0-26c9-4a66-a513-af4e23c68dcc",
   "metadata": {},
   "source": [
    "### 小提琴图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "20cb808f-d086-41e0-bd99-8a4513ef096a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"vioplot\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "a4a9b0ce-44ef-447f-a2ec-b21a6246561d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Attaching package: 'zoo'\n",
      "\n",
      "\n",
      "The following objects are masked from 'package:base':\n",
      "\n",
      "    as.Date, as.Date.numeric\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "library(zoo)\n",
    "library(vioplot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "06935fdb-a559-4fab-93ed-b3cf4e56392d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAPFBMVEX9/v0AAAAAZABMTUxn\naGd7e3uLjIuZmpmmpqaxsrG7vLvFxsXOz87X2Nff4N/n6Ofu7+79/v3/1wD////lH29MAAAA\nFHRSTlP//////////////////////wD//9zVPHEAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACAA\nSURBVHic7d3pgqK6FkDhmwbnCU+9/7teAQdASHbIBhJc34/uqpIigqwSEfV/dwDB/rf0FQDW\ngJAABYQEKCAkQAEhAQoICVBASIACQgIUEBKggJAABYQEKCAkQAEhAQoICVBASIACQgIUEBKg\ngJAABYQEKCAkQAEhAQoICVBASIACQgIUEBKggJAABYQEKCAkQAEhAQoICVBASIACQgIUEBKg\ngJAABYQEKCAkQAEhAQoICVBASIACQgIUEBKggJAmYIxp/Nex85i2+1uuqXpmPN4u4NLfQ0gT\nsMRxyYx42u/fmjGkryvqcekvIqQJWOL4+pkopNelM4Yku0J4IaQJWDazoYv0t1tCmhUhfSk3\nkmNu8sv9fszM5tL8odnd6oluO2M2x+4GddtlJj927mWKw+bx1fZU/8TUP338e8vNvnWP9Jh/\n9px/6y6o9Vv1QOfH8GZ3/lzh82OM3bVnMeo5GpM9f5w1r/Fp+5gq398sQ3bGek1SXdqZa3cd\nFfvMZPubdL2njZC+PLaHTbWh3PbVf5fnD7fVd1m1YVzqTWnTDqnz0/q/W/bc7jadJPLXj1qD\nvoe7v///Duk5qdm+JqqvqWmW1Jrjo4W6hLMp6316zaYacyik9livSapLO3PtrKPXgl+Cbo1U\nENKX19ZlssYW9P6hyctvs8/3jd/s/LT+77G1Pe6Misf2eGwnYaoLPtO+Rv386lBI2/fEnevW\nPJTWmuPlFcK2sWEfH6kV9/u+vmxgyM5YzVl35zqwjrL7LyCkL6bavo7l9nCt/nv+MHtsK+es\n+iN8enxX/pe1Qnr+9JyZZkiPf8s/0EW9eTU213Ijbob0+t3TvbNVd799/P03x+Kxy2jqe4Tn\n7+7aVbfnmNfX4vbcyCvPn32uZ8+Q3bE+M2/M4fZetsY6qjMt6r8j60dIX8x7V6exx2Oe28O5\n+rO/fW5Vp9a2+/rpubUtlll9HmE0Ntdz8wfm87tfdw/db3flnVtpX98HPX+3+AqpMcdDvUu3\n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\n1ZG688H5HaYAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"mpg distribution by auto type\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "vioplot(mpg~am.f*cyl.f,\n",
    "       data = mtcars,\n",
    "       varwidth=TRUE,\n",
    "       col=c(\"gold\",\"darkgreen\"),\n",
    "       main=\"mpg distribution by auto type\",\n",
    "       xlab=\"auto type\",ylab=\"miles per gallon\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7cbff77a-23a8-46fe-a798-10d803949508",
   "metadata": {},
   "source": [
    "### 点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "cf115ddd-52bb-40cd-84a0-068d6213de48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ngg==",
      "text/plain": [
       "Plot with title \"gas mileage for car models\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dotchart(mtcars$mpg,labels=row.names(mtcars),cex=0.7,main=\"gas mileage for car models\",xlab=\"miles per gallon\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5785022d-bd9b-4950-a800-5b8528c78ef2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAvVBMVEX9/v0AAAAAAP8AZABM\nTUxMTf5MkkxnaGdnaP5no2d7e3t7e/57r3uLjIuLjP6LuIuZmpmZmv6ZwZmmpqampv6myaax\nsrGxsv6x0LG7vLu7vP671ru+vr7FxsXFxv7F3MXOz87Oz/7O4c7X2NfX2P7X59ff4N/f4P7f\n7N/n6Ofn6P3n8Ofu7+7u7/3u9e796Of97+79/v3+TUz+aGf+e3v+jIv+mpn+pqb+srH+vLv+\nxsX+z87+2Nf+4N//AADYCGlKAAAAP3RSTlP/////////////////////////////////////\n////////////////////////////AP////////////////+crHvLAAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAgAElEQVR4nO2dC1vTvMOH31EYp+kE5BHl76OCKIgCHSd5gH3/j/U250PTbenS\npO1+93Xt1KbdJrttmuaX/F8OAFia/0v9AQDoAxAJgABAJAACAJEACABEAiAAEAmAAEAkAAIA\nkQAIAEQCIAAQCYAAQCQAAgCRAAgARAIgABAJgABAJAACAJEACABEAiAAEAmAAEAkAAIAkQAI\nAEQCIAAQCYAAQCQAAgCRAAgARAIgABAJgABAJAACAJEACABE6hiDwYDf1eZgfTB4F+wDzaP0\nWZf78G0FInWM5UV6V2wNkUIDkTrG8iIVG1+E+zyLvN2cBb0AInWRZUUK90lqvB1EAoH4vDlY\nP+A/qIuDzeLJm1Oy/Me74uxl80AdL0iRj5uDzY/5RVEh2znNzSPS151i4VdaUt+NsX+9EN/l\ngK2h7/bulC+82BzsyEKnbwbkTa0dm6Ucn83YZ+XH0N5d/64dByLF54D+lHfoD+qC/7AHxW/s\nVDz/IUryYsUPeZ0+nBoisf0M/snN3Rj71wuJXTKR+Aq6pngodHkjyvzD1uxYOzZLOT6bsc/K\nj0EXlL9rx4FI0fkxGKz/yH+s0x/UzuBzsegj/dVu0p/V54E6NJAf4m+ydrD5gxdSIv2gK3fo\nRvpujP3rhdROc/pL5qV+iPe5UB+weFX89D+aOzZLOT6bsc/Tqo9BF5S/a8eBSNF5x44bn/Vz\nBaGH9f8z/49ePeh37+jS4id6YO7G2H9VIbKC1N0+0jX8UMY5oNv8LgwpfT6tlOOzGfvkH+Nr\n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\njLQAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"gas mileage for car models \n",
       " grouped by cylinder\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x<-mtcars\n",
    "x$cyl <- factor(x$cyl)\n",
    "x$color[x$cyl==4] <- \"red\"\n",
    "x$color[x$cyl==6] <- \"blue\"\n",
    "x$color[x$cyl==8] <- \"darkgreen\"\n",
    "\n",
    "dotchart(x$mpg,\n",
    "    labels=row.names(x),\n",
    "    # cex = 1.5,\n",
    "    cex=0.9,\n",
    "    groups = x$cyl,\n",
    "    gcolor = \"black\",\n",
    "    color = x$color,\n",
    "    pch = 21,\n",
    "    main = \"gas mileage for car models \\n grouped by cylinder\",\n",
    "    xlab = \"mile per gallon\"\n",
    "   )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "b2bbd977-f093-4a41-b33d-7246dcb7a85a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n/wM0ZSDTwgjfPAAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"gas mileage for car models \n",
       " grouped by cylinder\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# x<-NULL\n",
    "x<-mtcars[order(mtcars$mpg),]\n",
    "x$cyl <- factor(x$cyl)\n",
    "x$color[x$cyl==4] <- \"red\"\n",
    "x$color[x$cyl==6] <- \"blue\"\n",
    "x$color[x$cyl==8] <- \"darkgreen\"\n",
    "\n",
    "dotchart(x$mpg,\n",
    "    labels=row.names(x),\n",
    "    # cex = 1.5,\n",
    "    cex=0.7,\n",
    "    groups = x$cyl,\n",
    "    gcolor = \"black\",\n",
    "    color = x$color,\n",
    "    pch = 21,\n",
    "    main = \"gas mileage for car models \\n grouped by cylinder\",\n",
    "    xlab = \"mile per gallon\"\n",
    "   )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "628edbe6-7849-44d2-866c-86d732b3e529",
   "metadata": {},
   "source": [
    "## chapter 7"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c444bcc-7153-481a-886d-7e3b346d744f",
   "metadata": {},
   "source": [
    "t检验当独立样本方差不相等时,应该选择Welsh的修正自由度：\n",
    "$$df = \\frac{(\\frac{s_1^2}{n_1}+\\frac{s_2^2}{n_2})^2}{\\frac{(s_1^2/n_1)^2}{n_1-1}+\\frac{(s_2^2/n_2)^2}{n_2-1}}$$"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ea7e6f43-40da-4ef5-88af-38cbd6b3a272",
   "metadata": {},
   "source": [
    "[Wilcoxon 秩和检验（Mann - Whitney U 检验）](https://blog.csdn.net/qq_41990294/article/details/127165776)\n",
    "\n",
    "<img src=\"img/030b.png\" width=600 height=400>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6072cdbd-d221-4dc9-97ce-4d5a841c80e5",
   "metadata": {},
   "source": [
    "Kruskal - Wallis 检验\n",
    "\n",
    "<img src=\"img/031b.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "50bfb34b-2dd5-4b1b-a14b-0a56cd696506",
   "metadata": {},
   "source": [
    "### 描述性统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "1ffc3683-64da-4379-b512-69550fe62830",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                   mpg  hp    wt\n",
      "Mazda RX4         21.0 110 2.620\n",
      "Mazda RX4 Wag     21.0 110 2.875\n",
      "Datsun 710        22.8  93 2.320\n",
      "Hornet 4 Drive    21.4 110 3.215\n",
      "Hornet Sportabout 18.7 175 3.440\n",
      "Valiant           18.1 105 3.460\n"
     ]
    }
   ],
   "source": [
    "myvars <- c(\"mpg\",\"hp\",\"wt\")\n",
    "print(head(mtcars[myvars]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "d323b9f1-3f5d-4f06-84d3-d8a42fa0184b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "      mpg              hp              wt       \n",
       " Min.   :10.40   Min.   : 52.0   Min.   :1.513  \n",
       " 1st Qu.:15.43   1st Qu.: 96.5   1st Qu.:2.581  \n",
       " Median :19.20   Median :123.0   Median :3.325  \n",
       " Mean   :20.09   Mean   :146.7   Mean   :3.217  \n",
       " 3rd Qu.:22.80   3rd Qu.:180.0   3rd Qu.:3.610  \n",
       " Max.   :33.90   Max.   :335.0   Max.   :5.424  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "summary(mtcars[myvars])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "643542a9-8420-4d90-8149-e9035e5dd98e",
   "metadata": {},
   "outputs": [],
   "source": [
    "mystats <- function(x,na.omit=FALSE){\n",
    "    if (na.omit)\n",
    "        x <- x[!is.na(x)]\n",
    "    m <- mean(x)\n",
    "    n <- length(x)\n",
    "    s <- sd(x)\n",
    "    skew <- sum((x-m)^3/s^3)/n#偏度\n",
    "    kurt <- sum((x-m)^4/s^4)/n -3 #峰度\n",
    "    return (c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "8e3deeab-a6d6-4a24-bda7-e33474d8bdbe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 5 × 3 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>mpg</th><th scope=col>hp</th><th scope=col>wt</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>n</th><td>32.000000</td><td> 32.0000000</td><td>32.00000000</td></tr>\n",
       "\t<tr><th scope=row>mean</th><td>20.090625</td><td>146.6875000</td><td> 3.21725000</td></tr>\n",
       "\t<tr><th scope=row>stdev</th><td> 6.026948</td><td> 68.5628685</td><td> 0.97845744</td></tr>\n",
       "\t<tr><th scope=row>skew</th><td> 0.610655</td><td>  0.7260237</td><td> 0.42314646</td></tr>\n",
       "\t<tr><th scope=row>kurtosis</th><td>-0.372766</td><td> -0.1355511</td><td>-0.02271075</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 5 × 3 of type dbl\n",
       "\\begin{tabular}{r|lll}\n",
       "  & mpg & hp & wt\\\\\n",
       "\\hline\n",
       "\tn & 32.000000 &  32.0000000 & 32.00000000\\\\\n",
       "\tmean & 20.090625 & 146.6875000 &  3.21725000\\\\\n",
       "\tstdev &  6.026948 &  68.5628685 &  0.97845744\\\\\n",
       "\tskew &  0.610655 &   0.7260237 &  0.42314646\\\\\n",
       "\tkurtosis & -0.372766 &  -0.1355511 & -0.02271075\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 5 × 3 of type dbl\n",
       "\n",
       "| <!--/--> | mpg | hp | wt |\n",
       "|---|---|---|---|\n",
       "| n | 32.000000 |  32.0000000 | 32.00000000 |\n",
       "| mean | 20.090625 | 146.6875000 |  3.21725000 |\n",
       "| stdev |  6.026948 |  68.5628685 |  0.97845744 |\n",
       "| skew |  0.610655 |   0.7260237 |  0.42314646 |\n",
       "| kurtosis | -0.372766 |  -0.1355511 | -0.02271075 |\n",
       "\n"
      ],
      "text/plain": [
       "         mpg       hp          wt         \n",
       "n        32.000000  32.0000000 32.00000000\n",
       "mean     20.090625 146.6875000  3.21725000\n",
       "stdev     6.026948  68.5628685  0.97845744\n",
       "skew      0.610655   0.7260237  0.42314646\n",
       "kurtosis -0.372766  -0.1355511 -0.02271075"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sapply(mtcars[myvars],mystats)#不改变被处理的数据类型比如dataframe被处理后，返回的也是dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "8c0bd4b5-3c67-49ed-b1c0-f0dcf058ddee",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Attaching package: 'Hmisc'\n",
      "\n",
      "\n",
      "The following objects are masked from 'package:base':\n",
      "\n",
      "    format.pval, units\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "library(Hmisc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "cf7b9080-74ad-484b-b67d-2f05db7fb464",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "mtcars[myvars] \n",
       "\n",
       " 3  Variables      32  Observations\n",
       "--------------------------------------------------------------------------------\n",
       "mpg \n",
       "       n  missing distinct     Info     Mean  pMedian      Gmd      .05 \n",
       "      32        0       25    0.999    20.09     19.6    6.796    12.00 \n",
       "     .10      .25      .50      .75      .90      .95 \n",
       "   14.34    15.43    19.20    22.80    30.09    31.30 \n",
       "\n",
       "lowest : 10.4 13.3 14.3 14.7 15  , highest: 26   27.3 30.4 32.4 33.9\n",
       "--------------------------------------------------------------------------------\n",
       "hp \n",
       "       n  missing distinct     Info     Mean  pMedian      Gmd      .05 \n",
       "      32        0       22    0.997    146.7    142.5    77.04    63.65 \n",
       "     .10      .25      .50      .75      .90      .95 \n",
       "   66.00    96.50   123.00   180.00   243.50   253.55 \n",
       "\n",
       "lowest :  52  62  65  66  91, highest: 215 230 245 264 335\n",
       "--------------------------------------------------------------------------------\n",
       "wt \n",
       "       n  missing distinct     Info     Mean  pMedian      Gmd      .05 \n",
       "      32        0       29    0.999    3.217    3.186    1.089    1.736 \n",
       "     .10      .25      .50      .75      .90      .95 \n",
       "   1.956    2.581    3.325    3.610    4.048    5.293 \n",
       "\n",
       "lowest : 1.513 1.615 1.835 1.935 2.14 , highest: 3.845 4.07  5.25  5.345 5.424\n",
       "--------------------------------------------------------------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "describe(mtcars[myvars])#Gmd（基尼均差）‌：衡量数据分布的离散程度。Info(关于变量的连续性的统计量)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "84b9e685-2e65-4873-a418-822dfbb73c1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"pastecs\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "8919babe-4876-484e-9a98-eba62e30ce6e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                     mpg           hp          wt\n",
      "nbr.val       32.0000000   32.0000000  32.0000000\n",
      "nbr.null       0.0000000    0.0000000   0.0000000\n",
      "nbr.na         0.0000000    0.0000000   0.0000000\n",
      "min           10.4000000   52.0000000   1.5130000\n",
      "max           33.9000000  335.0000000   5.4240000\n",
      "range         23.5000000  283.0000000   3.9110000\n",
      "sum          642.9000000 4694.0000000 102.9520000\n",
      "median        19.2000000  123.0000000   3.3250000\n",
      "mean          20.0906250  146.6875000   3.2172500\n",
      "SE.mean        1.0654240   12.1203173   0.1729685\n",
      "CI.mean.0.95   2.1729465   24.7195501   0.3527715\n",
      "var           36.3241028 4700.8669355   0.9573790\n",
      "std.dev        6.0269481   68.5628685   0.9784574\n",
      "coef.var       0.2999881    0.4674077   0.3041285\n"
     ]
    }
   ],
   "source": [
    "library(pastecs)\n",
    "print(stat.desc(mtcars[myvars]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78abd4e2-34ce-4ad4-a998-95b779828a33",
   "metadata": {},
   "source": [
    "- `SE.mean`: 均值的标准误差（Standard Error of the Mean）,计算公式为：$\\frac{\\sigma}{\\sqrt{n}}$。\n",
    "- `CI.mean.0.95`:均值的 95% 置信区间。它是一个区间估计，表示我们有 95% 的把握认为总体均值落在这个区间内。计算通常基于样本均值和标准误，不同的分布可能有不同的计算方法。\n",
    "- `coef.var`:变异系数（Coefficient of Variation）。它是标准差与均值的比值:$\\frac{\\sigma}{\\bar x}$，通常以百分数表示。变异系数可以用于比较不同均值的数据集的离散程度。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "ea540143-dd5e-4e9e-8c69-9d6fa70597b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"psych\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "804ea367-a01a-4f71-b362-31bdc7be4c71",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    vars  n   mean    sd median trimmed   mad   min    max  range skew kurtosis\n",
      "mpg    1 32  20.09  6.03  19.20   19.70  5.41 10.40  33.90  23.50 0.61    -0.37\n",
      "hp     2 32 146.69 68.56 123.00  141.19 77.10 52.00 335.00 283.00 0.73    -0.14\n",
      "wt     3 32   3.22  0.98   3.33    3.15  0.77  1.51   5.42   3.91 0.42    -0.02\n",
      "       se\n",
      "mpg  1.07\n",
      "hp  12.12\n",
      "wt   0.17\n"
     ]
    }
   ],
   "source": [
    "print(psych::describe(mtcars[myvars]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "170b1f77-8280-4502-b139-a42661626304",
   "metadata": {},
   "source": [
    "- `trimmed`:默认值trim=.1,截尾均值。\n",
    "- `mad`:绝对中位差(Median Absolute Deviation)。是一种衡量数据离散程度的统计量。它的计算基于中位数，具体来说，是计算每个数据点与中位数的绝对差值的中位数。对异常值具有较强的鲁棒性。与标准差等统计量相比，它不会因为少数极端值的存在而受到很大影响。\n",
    "    - 首先，计算数据集的中位数$M$。\n",
    "    - 然后，对于数据集中的每个数据点$x_i$，计算$|x_i-M|$，得到一组绝对差值。\n",
    "    - 最后，计算这组绝对差值的中位数，即为绝对中位差。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "67a7f38b-0bed-4ab4-a741-4017c8444e66",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Group.1      mpg       hp       wt\n",
      "1       0 17.14737 160.2632 3.768895\n",
      "2       1 24.39231 126.8462 2.411000\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(mtcars[myvars],by=list(mtcars$am),mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "0112cf98-8263-4ea8-88d3-6689fd330019",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  am      mpg       hp       wt\n",
      "1  0 17.14737 160.2632 3.768895\n",
      "2  1 24.39231 126.8462 2.411000\n"
     ]
    }
   ],
   "source": [
    "#by的list里面可以指定名称，否则默认为Group.1\n",
    "print(aggregate(mtcars[myvars],by=list(am=mtcars$am),mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "27c3d8cc-f092-41e6-a9e5-b4f271a5ebc0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  am      mpg       hp        wt\n",
      "1  0 3.833966 53.90820 0.7774001\n",
      "2  1 6.166504 84.06232 0.6169816\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(mtcars[myvars],by=list(am=mtcars$am),sd))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe4554a0-2054-467a-b627-94591d1bfa62",
   "metadata": {},
   "source": [
    "aggregate()无法一次返回若干个统计量，可以用by()函数完成一次返回多个统计量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "3df4d610-fc26-4e18-977d-64b1ef11b9b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "am: 0\n",
      "                 mpg           hp         wt\n",
      "n        19.00000000  19.00000000 19.0000000\n",
      "mean     17.14736842 160.26315789  3.7688947\n",
      "stdev     3.83396639  53.90819573  0.7774001\n",
      "skew      0.01395038  -0.01422519  0.9759294\n",
      "kurtosis -0.80317826  -1.20969733  0.1415676\n",
      "------------------------------------------------------------ \n",
      "am: 1\n",
      "                 mpg          hp         wt\n",
      "n        13.00000000  13.0000000 13.0000000\n",
      "mean     24.39230769 126.8461538  2.4110000\n",
      "stdev     6.16650381  84.0623243  0.6169816\n",
      "skew      0.05256118   1.3598859  0.2103128\n",
      "kurtosis -1.45535200   0.5634635 -1.1737358\n"
     ]
    }
   ],
   "source": [
    "dstats <- function(x){sapply(x,mystats)}\n",
    "print(by(mtcars[myvars],list(am=mtcars$am),dstats))#这里list(am=mtcars$am)相当于进行了别名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "876f133d-7061-474e-8d45-f33eff7bba05",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mtcars$am: 0\n",
      "                 mpg           hp         wt\n",
      "n        19.00000000  19.00000000 19.0000000\n",
      "mean     17.14736842 160.26315789  3.7688947\n",
      "stdev     3.83396639  53.90819573  0.7774001\n",
      "skew      0.01395038  -0.01422519  0.9759294\n",
      "kurtosis -0.80317826  -1.20969733  0.1415676\n",
      "------------------------------------------------------------ \n",
      "mtcars$am: 1\n",
      "                 mpg          hp         wt\n",
      "n        13.00000000  13.0000000 13.0000000\n",
      "mean     24.39230769 126.8461538  2.4110000\n",
      "stdev     6.16650381  84.0623243  0.6169816\n",
      "skew      0.05256118   1.3598859  0.2103128\n",
      "kurtosis -1.45535200   0.5634635 -1.1737358\n"
     ]
    }
   ],
   "source": [
    "print(by(mtcars[myvars],mtcars$am,dstats))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "27bf2032-e36e-42dc-90dd-d0b1ff799056",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"doBy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "1af60d45-336e-453e-b177-e19b90ea8b40",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"purrr\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "88ec54ed-3f42-42df-b45a-58b2d570883d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  am mpg.n mpg.mean mpg.stdev   mpg.skew mpg.kurtosis hp.n  hp.mean hp.stdev\n",
      "1  0    19 17.14737  3.833966 0.01395038   -0.8031783   19 160.2632 53.90820\n",
      "2  1    13 24.39231  6.166504 0.05256118   -1.4553520   13 126.8462 84.06232\n",
      "      hp.skew hp.kurtosis wt.n  wt.mean  wt.stdev   wt.skew wt.kurtosis\n",
      "1 -0.01422519  -1.2096973   19 3.768895 0.7774001 0.9759294   0.1415676\n",
      "2  1.35988586   0.5634635   13 2.411000 0.6169816 0.2103128  -1.1737358\n"
     ]
    }
   ],
   "source": [
    "library(doBy)\n",
    "print(summaryBy(mpg+hp+wt~am,data=mtcars,FUN=mystats))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "4acb252d-9391-42b3-bf7f-0bdae6b938d7",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Attaching package: 'psych'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:Hmisc':\n",
      "\n",
      "    describe\n",
      "\n",
      "\n",
      "The following object is masked from 'package:plotrix':\n",
      "\n",
      "    rescale\n",
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\n",
       " Descriptive statistics by group \n",
       "am: 0\n",
       "    vars  n   mean    sd median trimmed   mad   min    max  range  skew\n",
       "mpg    1 19  17.15  3.83  17.30   17.12  3.11 10.40  24.40  14.00  0.01\n",
       "hp     2 19 160.26 53.91 175.00  161.06 77.10 62.00 245.00 183.00 -0.01\n",
       "wt     3 19   3.77  0.78   3.52    3.75  0.45  2.46   5.42   2.96  0.98\n",
       "    kurtosis    se\n",
       "mpg    -0.80  0.88\n",
       "hp     -1.21 12.37\n",
       "wt      0.14  0.18\n",
       "------------------------------------------------------------ \n",
       "am: 1\n",
       "    vars  n   mean    sd median trimmed   mad   min    max  range skew kurtosis\n",
       "mpg    1 13  24.39  6.17  22.80   24.38  6.67 15.00  33.90  18.90 0.05    -1.46\n",
       "hp     2 13 126.85 84.06 109.00  114.73 63.75 52.00 335.00 283.00 1.36     0.56\n",
       "wt     3 13   2.41  0.62   2.32    2.39  0.68  1.51   3.57   2.06 0.21    -1.17\n",
       "       se\n",
       "mpg  1.71\n",
       "hp  23.31\n",
       "wt   0.17"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(psych)\n",
    "describeBy(mtcars[myvars],list(am=mtcars$am))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "970afccb-5593-49de-976e-f4ba592841f3",
   "metadata": {},
   "source": [
    "### 频数表和列联表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "05d66a72-8b6d-4ac5-b050-a7692299c683",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  ID Treatment  Sex Age Improved\n",
      "1 57   Treated Male  27     Some\n",
      "2 46   Treated Male  29     None\n",
      "3 77   Treated Male  30     None\n",
      "4 17   Treated Male  32   Marked\n",
      "5 36   Treated Male  46   Marked\n",
      "6 23   Treated Male  58   Marked\n"
     ]
    }
   ],
   "source": [
    "library(vcd)\n",
    "print(head(Arthritis))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "eb94583e-8178-4fa5-9446-a523a63dac21",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Improved\n",
       "  None   Some Marked \n",
       "    42     14     28 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- with(Arthritis,table(Improved))\n",
    "mytable "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "b3404bb9-8575-4edb-a0fb-d9cedeb05fc3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Improved\n",
       "     None      Some    Marked \n",
       "0.5000000 0.1666667 0.3333333 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "e3fdf908-8af5-4825-a8cd-2092ca27c527",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Improved\n",
       "    None     Some   Marked \n",
       "50.00000 16.66667 33.33333 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable)*100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "18f4c908-c8e6-475f-8cfa-9996c215f87f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         Improved\n",
       "Treatment None Some Marked\n",
       "  Placebo   29    7      7\n",
       "  Treated   13    7     21"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Treatment+Improved,data=Arthritis)\n",
    "mytable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "65873fa5-4efa-4adb-8c6e-a9229b262a22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         \n",
       "          None Some Marked\n",
       "  Placebo   29    7      7\n",
       "  Treated   13    7     21"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "table(Arthritis$Treatment,Arthritis$Improved)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "275b4ed7-834e-48af-908c-e4d662a585f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "84"
      ],
      "text/latex": [
       "84"
      ],
      "text/markdown": [
       "84"
      ],
      "text/plain": [
       "[1] 84"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "4849ce11-5182-4e97-bb97-b4f51296b3d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Treatment\n",
       "Placebo Treated \n",
       "     43      41 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,1)#行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "0f526b3e-a088-4861-bee8-0c1426153d07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Improved\n",
       "  None   Some Marked \n",
       "    42     14     28 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,2)#列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "6ccf556a-d5cd-4497-8803-21c95f0c6935",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         Improved\n",
       "Treatment       None       Some     Marked\n",
       "  Placebo 0.34523810 0.08333333 0.08333333\n",
       "  Treated 0.15476190 0.08333333 0.25000000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "a91deddf-cb9d-42b7-aff0-6b6706b6c19c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         Improved\n",
       "Treatment      None      Some    Marked\n",
       "  Placebo 0.6744186 0.1627907 0.1627907\n",
       "  Treated 0.3170732 0.1707317 0.5121951"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable,1)#行作为条件的条件概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "fb39ddba-d5d5-4213-ac0e-e39058fa6350",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         Improved\n",
       "Treatment      None      Some    Marked\n",
       "  Placebo 0.6904762 0.5000000 0.2500000\n",
       "  Treated 0.3095238 0.5000000 0.7500000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable,2)#列作为条件的条件概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "78c49af6-6ad9-443f-8f33-bddf253e6a2d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A table: 3 × 4 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>None</th><th scope=col>Some</th><th scope=col>Marked</th><th scope=col>Sum</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Placebo</th><td>29</td><td> 7</td><td> 7</td><td>43</td></tr>\n",
       "\t<tr><th scope=row>Treated</th><td>13</td><td> 7</td><td>21</td><td>41</td></tr>\n",
       "\t<tr><th scope=row>Sum</th><td>42</td><td>14</td><td>28</td><td>84</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A table: 3 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "  & None & Some & Marked & Sum\\\\\n",
       "\\hline\n",
       "\tPlacebo & 29 &  7 &  7 & 43\\\\\n",
       "\tTreated & 13 &  7 & 21 & 41\\\\\n",
       "\tSum & 42 & 14 & 28 & 84\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A table: 3 × 4 of type dbl\n",
       "\n",
       "| <!--/--> | None | Some | Marked | Sum |\n",
       "|---|---|---|---|---|\n",
       "| Placebo | 29 |  7 |  7 | 43 |\n",
       "| Treated | 13 |  7 | 21 | 41 |\n",
       "| Sum | 42 | 14 | 28 | 84 |\n",
       "\n"
      ],
      "text/plain": [
       "         Improved\n",
       "Treatment None Some Marked Sum\n",
       "  Placebo 29    7    7     43 \n",
       "  Treated 13    7   21     41 \n",
       "  Sum     42   14   28     84 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "93ee4b7a-c557-47b2-b0c0-a9b73c568116",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A table: 3 × 4 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>None</th><th scope=col>Some</th><th scope=col>Marked</th><th scope=col>Sum</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Placebo</th><td>0.3452381</td><td>0.08333333</td><td>0.08333333</td><td>0.5119048</td></tr>\n",
       "\t<tr><th scope=row>Treated</th><td>0.1547619</td><td>0.08333333</td><td>0.25000000</td><td>0.4880952</td></tr>\n",
       "\t<tr><th scope=row>Sum</th><td>0.5000000</td><td>0.16666667</td><td>0.33333333</td><td>1.0000000</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A table: 3 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "  & None & Some & Marked & Sum\\\\\n",
       "\\hline\n",
       "\tPlacebo & 0.3452381 & 0.08333333 & 0.08333333 & 0.5119048\\\\\n",
       "\tTreated & 0.1547619 & 0.08333333 & 0.25000000 & 0.4880952\\\\\n",
       "\tSum & 0.5000000 & 0.16666667 & 0.33333333 & 1.0000000\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A table: 3 × 4 of type dbl\n",
       "\n",
       "| <!--/--> | None | Some | Marked | Sum |\n",
       "|---|---|---|---|---|\n",
       "| Placebo | 0.3452381 | 0.08333333 | 0.08333333 | 0.5119048 |\n",
       "| Treated | 0.1547619 | 0.08333333 | 0.25000000 | 0.4880952 |\n",
       "| Sum | 0.5000000 | 0.16666667 | 0.33333333 | 1.0000000 |\n",
       "\n"
      ],
      "text/plain": [
       "         Improved\n",
       "Treatment None      Some       Marked     Sum      \n",
       "  Placebo 0.3452381 0.08333333 0.08333333 0.5119048\n",
       "  Treated 0.1547619 0.08333333 0.25000000 0.4880952\n",
       "  Sum     0.5000000 0.16666667 0.33333333 1.0000000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(prop.table(mytable))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "6b1f9c5a-79f6-4a2e-84c3-ffab4cb5bf8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A table: 2 × 4 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>None</th><th scope=col>Some</th><th scope=col>Marked</th><th scope=col>Sum</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Placebo</th><td>0.6744186</td><td>0.1627907</td><td>0.1627907</td><td>1</td></tr>\n",
       "\t<tr><th scope=row>Treated</th><td>0.3170732</td><td>0.1707317</td><td>0.5121951</td><td>1</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A table: 2 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "  & None & Some & Marked & Sum\\\\\n",
       "\\hline\n",
       "\tPlacebo & 0.6744186 & 0.1627907 & 0.1627907 & 1\\\\\n",
       "\tTreated & 0.3170732 & 0.1707317 & 0.5121951 & 1\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A table: 2 × 4 of type dbl\n",
       "\n",
       "| <!--/--> | None | Some | Marked | Sum |\n",
       "|---|---|---|---|---|\n",
       "| Placebo | 0.6744186 | 0.1627907 | 0.1627907 | 1 |\n",
       "| Treated | 0.3170732 | 0.1707317 | 0.5121951 | 1 |\n",
       "\n"
      ],
      "text/plain": [
       "         Improved\n",
       "Treatment None      Some      Marked    Sum\n",
       "  Placebo 0.6744186 0.1627907 0.1627907 1  \n",
       "  Treated 0.3170732 0.1707317 0.5121951 1  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(prop.table(mytable,1),2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "1245229b-f7d5-4417-982e-8d771b02b5a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A table: 3 × 3 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>None</th><th scope=col>Some</th><th scope=col>Marked</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Placebo</th><td>0.6904762</td><td>0.5</td><td>0.25</td></tr>\n",
       "\t<tr><th scope=row>Treated</th><td>0.3095238</td><td>0.5</td><td>0.75</td></tr>\n",
       "\t<tr><th scope=row>Sum</th><td>1.0000000</td><td>1.0</td><td>1.00</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A table: 3 × 3 of type dbl\n",
       "\\begin{tabular}{r|lll}\n",
       "  & None & Some & Marked\\\\\n",
       "\\hline\n",
       "\tPlacebo & 0.6904762 & 0.5 & 0.25\\\\\n",
       "\tTreated & 0.3095238 & 0.5 & 0.75\\\\\n",
       "\tSum & 1.0000000 & 1.0 & 1.00\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A table: 3 × 3 of type dbl\n",
       "\n",
       "| <!--/--> | None | Some | Marked |\n",
       "|---|---|---|---|\n",
       "| Placebo | 0.6904762 | 0.5 | 0.25 |\n",
       "| Treated | 0.3095238 | 0.5 | 0.75 |\n",
       "| Sum | 1.0000000 | 1.0 | 1.00 |\n",
       "\n"
      ],
      "text/plain": [
       "         Improved\n",
       "Treatment None      Some Marked\n",
       "  Placebo 0.6904762 0.5  0.25  \n",
       "  Treated 0.3095238 0.5  0.75  \n",
       "  Sum     1.0000000 1.0  1.00  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(prop.table(mytable,2),1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "008b3090-eb1d-4255-b81d-7f635a85e5cd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"gmodels\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "40411d8f-3802-4c58-a9f5-fcb3aaf64b8c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"gtools\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "551e15c4-6b7c-4936-80ac-c94405ead7cc",
   "metadata": {
    "scrolled": true
   },
   "source": [
    "library(gmodels)\n",
    "CrossTable(Arthritis$Treatment,Arthritis$Improved,chisq=TRUE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "0f2a41ca-9bfd-4b35-93a1-577c33255b2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "21.5"
      ],
      "text/latex": [
       "21.5"
      ],
      "text/markdown": [
       "21.5"
      ],
      "text/plain": [
       "[1] 21.5"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "43*42/84"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "ff78cdfe-421d-4f16-b2a7-ce1618f10618",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "2.61627906976744"
      ],
      "text/latex": [
       "2.61627906976744"
      ],
      "text/markdown": [
       "2.61627906976744"
      ],
      "text/plain": [
       "[1] 2.616279"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "(29-21.5)^2/21.5"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a893806-1f54-427a-95fb-89e174773c51",
   "metadata": {},
   "source": [
    "第一个单元格的Chi-square contribution计算过程如上述所示就是$\\frac{(O_{ij} - E_{ij})^2}{E_{ij}}$其中O和E分别是观测值和期望值，期望值的计算公式为$\\frac{R \\times C}{N}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "6d3b6ab8-36c0-432f-b3b8-a441251944ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Improved = None\n",
       "\n",
       "         Sex\n",
       "Treatment Female Male\n",
       "  Placebo     19   10\n",
       "  Treated      6    7\n",
       "\n",
       ", , Improved = Some\n",
       "\n",
       "         Sex\n",
       "Treatment Female Male\n",
       "  Placebo      7    0\n",
       "  Treated      5    2\n",
       "\n",
       ", , Improved = Marked\n",
       "\n",
       "         Sex\n",
       "Treatment Female Male\n",
       "  Placebo      6    1\n",
       "  Treated     16    5\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Treatment+Sex+Improved,data=Arthritis)\n",
    "mytable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "bc2da32d-d096-4f4f-9f21-117c286239bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".dl-inline {width: auto; margin:0; padding: 0}\n",
       ".dl-inline>dt, .dl-inline>dd {float: none; width: auto; display: inline-block}\n",
       ".dl-inline>dt::after {content: \":\\0020\"; padding-right: .5ex}\n",
       ".dl-inline>dt:not(:first-of-type) {padding-left: .5ex}\n",
       "</style><dl class=dl-inline><dt>Female</dt><dd>7</dd><dt>Male</dt><dd>0</dd></dl>\n"
      ],
      "text/latex": [
       "\\begin{description*}\n",
       "\\item[Female] 7\n",
       "\\item[Male] 0\n",
       "\\end{description*}\n"
      ],
      "text/markdown": [
       "Female\n",
       ":   7Male\n",
       ":   0\n",
       "\n"
      ],
      "text/plain": [
       "Female   Male \n",
       "     7      0 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable[\"Placebo\",,\"Some\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "c509fefc-3c77-46db-8f33-713ce10aac04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                 Improved None Some Marked\n",
       "Treatment Sex                             \n",
       "Placebo   Female            19    7      6\n",
       "          Male              10    0      1\n",
       "Treated   Female             6    5     16\n",
       "          Male               7    2      5"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ftable(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "abd40a88-12cc-4a3d-a958-78daa494fa07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Treatment\n",
       "Placebo Treated \n",
       "     43      41 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "fe0f0621-99bd-4732-a125-d85b81be39d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sex\n",
       "Female   Male \n",
       "    59     25 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "a8d32b13-52e5-4272-9f2a-e157731af83e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Improved\n",
       "  None   Some Marked \n",
       "    42     14     28 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "4f645db5-8267-4995-82ae-073ddf9150da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "         Improved\n",
       "Treatment None Some Marked\n",
       "  Placebo   29    7      7\n",
       "  Treated   13    7     21"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "margin.table(mytable,c(1,3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "b56ed2cf-2569-4d05-aaf8-e7e3ac225e5a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Improved = None\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.22619048 0.11904762\n",
       "  Treated 0.07142857 0.08333333\n",
       "\n",
       ", , Improved = Some\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.08333333 0.00000000\n",
       "  Treated 0.05952381 0.02380952\n",
       "\n",
       ", , Improved = Marked\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.07142857 0.01190476\n",
       "  Treated 0.19047619 0.05952381\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "c3c70560-8c0d-4ac5-a22a-4934be67414a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Improved = None\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.59375000 0.90909091\n",
       "  Treated 0.22222222 0.50000000\n",
       "\n",
       ", , Improved = Some\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.21875000 0.00000000\n",
       "  Treated 0.18518519 0.14285714\n",
       "\n",
       ", , Improved = Marked\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.18750000 0.09090909\n",
       "  Treated 0.59259259 0.35714286\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prop.table(mytable,c(1,2))#在Treatment和Sex的条件下，Improved的条件概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "3603c27c-0d8d-4c37-8ce5-d183824aa9a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                 Improved       None       Some     Marked\n",
       "Treatment Sex                                             \n",
       "Placebo   Female          0.59375000 0.21875000 0.18750000\n",
       "          Male            0.90909091 0.00000000 0.09090909\n",
       "Treated   Female          0.22222222 0.18518519 0.59259259\n",
       "          Male            0.50000000 0.14285714 0.35714286"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ftable(prop.table(mytable,c(1,2)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "83f038ca-3220-4a6d-a9c7-e8e50b4148e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Improved = None\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.59375000 0.90909091\n",
       "  Treated 0.22222222 0.50000000\n",
       "\n",
       ", , Improved = Some\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.21875000 0.00000000\n",
       "  Treated 0.18518519 0.14285714\n",
       "\n",
       ", , Improved = Marked\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 0.18750000 0.09090909\n",
       "  Treated 0.59259259 0.35714286\n",
       "\n",
       ", , Improved = Sum\n",
       "\n",
       "         Sex\n",
       "Treatment     Female       Male\n",
       "  Placebo 1.00000000 1.00000000\n",
       "  Treated 1.00000000 1.00000000\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(prop.table(mytable,c(1,2)),3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "87cb5949-1563-49fd-aa54-ee4bddbb2bb0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                 Improved       None       Some     Marked        Sum\n",
       "Treatment Sex                                                        \n",
       "Placebo   Female          0.59375000 0.21875000 0.18750000 1.00000000\n",
       "          Male            0.90909091 0.00000000 0.09090909 1.00000000\n",
       "Treated   Female          0.22222222 0.18518519 0.59259259 1.00000000\n",
       "          Male            0.50000000 0.14285714 0.35714286 1.00000000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ftable(addmargins(prop.table(mytable,c(1,2)),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "9619dc7e-181d-4334-b9c2-d6a077e6df0d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tPearson's Chi-squared test\n",
       "\n",
       "data:  mytable\n",
       "X-squared = 13.055, df = 2, p-value = 0.001463\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Treatment+Improved,data=Arthritis)\n",
    "chisq.test(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "7c2fbb8b-6eb6-4528-b1a6-2292298a0fbf",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Warning message in chisq.test(mytable):\n",
      "\"Chi-squared approximation may be incorrect\"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\n",
       "\tPearson's Chi-squared test\n",
       "\n",
       "data:  mytable\n",
       "X-squared = 4.8407, df = 2, p-value = 0.08889\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Improved+Sex,data=Arthritis)\n",
    "chisq.test(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "4daf059d-42a2-494b-8ee1-df6fd0857b77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "        Sex\n",
       "Improved Female Male\n",
       "  None       25   17\n",
       "  Some       12    2\n",
       "  Marked     22    6"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable#因为存在观测数小于5，所以卡方检验可能无效"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74fc4be0-3aa7-442a-9b63-02bba3d3ce64",
   "metadata": {},
   "source": [
    "卡方检验是一种单尾检验。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac1ae019-5bf9-4b73-b8cd-a3cb35dc4c99",
   "metadata": {},
   "source": [
    "**Fisher 精确检验（Fisher's Exact Test）**\n",
    "\n",
    "- Fisher 精确检验（Fisher's Exact Test）是一种用于分析列联表数据的统计检验方法。它主要用于检验两个分类变量之间是否存在关联，尤其适用于样本量较小或者理论频数较小（如小于 5）的情况，此时卡方检验可能不太准确。\n",
    "- 假设我们有一个的列联表，如下所示：\n",
    "| | 类别 B1 | 类别 B2 | 合计 |\n",
    "|---|---|---|---|\n",
    "| 类别 A1 | a | b | a+b |\n",
    "| 类别 A2 | c | d | c+d |\n",
    "| 合计 | a+c |b+d  |n=a+b+c+d  |\n",
    "\n",
    "- fisher 精确检验基于超几何分布来计算在边缘总和（行总和与列总和）固定的情况下，出现当前观测表或更极端情况的概率。在这种分布下，单尾的p-value计算公式为：$$P=\\frac{\\begin{pmatrix}a+c\\\\a\\end{pmatrix}\\times\\begin{pmatrix}b+d\\\\b\\end{pmatrix}}{\\begin{pmatrix}n\\\\a+b\\end{pmatrix}}$$,其中$\\begin{pmatrix}m\\\\k\\end{pmatrix} = \\frac{m!}{k!(m-k)!}$是组合数的计算公式。\n",
    "\n",
    "<img src=\"img/032.png\" width=600 height=400>\n",
    "\n",
    "*现在的问题是双侧检验是怎么做的？好困，留着吧*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "340a73e1-eb4f-4ff9-ab77-da8d78c2f66f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            gender weight\n",
      "Dieting          0     10\n",
      "Non-dieting     12      2\n"
     ]
    }
   ],
   "source": [
    "mydatatxt <- \"\n",
    "gender weight\n",
    "0 10\n",
    "12 2\n",
    "\"\n",
    "mydata <- read.table(header=TRUE, text=mydatatxt,row.names=c(\"Dieting\",\"Non-dieting\"))\n",
    "print(mydata)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "63e6c6ef-6b1e-45d8-9d11-a97aa8cb52ad",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tFisher's Exact Test for Count Data\n",
       "\n",
       "data:  mydata\n",
       "p-value = 3.365e-05\n",
       "alternative hypothesis: true odds ratio is less than 1\n",
       "95 percent confidence interval:\n",
       " 0.0000000 0.1224248\n",
       "sample estimates:\n",
       "odds ratio \n",
       "         0 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fisher.test(mydata,alternative=\"less\")#用于单侧检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "1117e83c-d856-42d1-961a-a2d0a4675834",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "3.36253551805242e-40"
      ],
      "text/latex": [
       "3.36253551805242e-40"
      ],
      "text/markdown": [
       "3.36253551805242e-40"
      ],
      "text/plain": [
       "[1] 3.362536e-40"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "66/ factorial(24)/ factorial(14)/ factorial(10)#上述p-value计算过程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39892cd5-fe52-467b-9333-31d589007187",
   "metadata": {},
   "source": [
    "**Cochran-Mantel-Haensze检验**\n",
    "\n",
    "1. **定义与目的**\n",
    "   - Cochran - Mantel - Haenszel（CMH）检验是一种用于分层数据分析的统计检验方法。它主要用于在存在分层变量的情况下，检验两个分类变量之间是否存在关联，同时控制分层变量的混杂效应。\n",
    "   - 例如，在医学研究中，研究药物治疗效果（有效/无效）与患者性别（男/女）之间的关系时，可能需要考虑患者所在的医院（分层变量），因为不同医院的医疗条件等因素可能会对治疗效果产生影响。CMH检验可以在考虑医院差异的基础上，判断药物治疗效果和性别之间是否存在真正的关联。\n",
    "2. **基本原理与计算步骤**\n",
    "   - **构建分层表格**\n",
    "     - 首先，对于每一层（由分层变量定义），构建一个二维列联表来展示两个分类变量的交叉分类情况。假设分层变量有$k$层，对于第$i$层，列联表如下：\n",
    "|  | 类别B1 | 类别B2 |\n",
    "|---|---|---|\n",
    "| 类别A1 | $n_{11i}$ | $n_{12i}$ |\n",
    "| 类别A2 | $n_{21i}$ | $n_{22i}$ |\n",
    "   - **计算期望频数和方差**\n",
    "     - 在每个分层列联表中，计算期望频数$E_{ij}$和方差$V_{ij}$。对于第$i$层列联表中单元格$(1,1)$（即$n_{11i}$单元格），期望频数$E_{11i}=\\frac{(n_{11i}+n_{12i})(n_{11i}+n_{21i})}{n_{i}}$，其中$n_{i}=n_{11i}+n_{12i}+n_{21i}+n_{22i}$是第$i$层的总样本数。\n",
    "     - 方差$V_{11i}=\\frac{(n_{11i}+n_{12i})(n_{21i}+n_{22i})(n_{11i}+n_{21i})(n_{12i}+n_{22i})}{n_{i}^{2}(n_{i}-1)}$。\n",
    "   - **计算CMH统计量**\n",
    "     - CMH统计量有不同的计算形式，常用的是基于一般关联（General Association）的统计量$\\chi_{CMH}^{2}$。计算公式为$\\chi_{CMH}^{2}=\\frac{(\\sum_{i = 1}^{k}(n_{11i}-E_{11i}))^{2}}{\\sum_{i = 1}^{k}V_{11i}}$。\n",
    "3. **自由度与假设检验**\n",
    "   - CMH统计量服从自由度为\\(1\\)的卡方分布。\n",
    "   - 原假设$H_{0}$是在控制分层变量后，两个分类变量（A和B）之间不存在关联；备择假设$H_{1}$是在控制分层变量后，两个分类变量之间存在关联。\n",
    "   - 根据计算得到的$\\chi_{CMH}^{2}$值和自由度，与给定显著性水平（如$\\alpha = 0.05$）下的卡方分布临界值进行比较。如果$\\chi_{CMH}^{2}$大于临界值，则拒绝原假设，认为在控制分层变量后，两个分类变量之间存在关联。\n",
    "4. **应用场景与优势**\n",
    "   - **应用场景**\n",
    "     - 广泛应用于医学、社会学、流行病学等领域。例如，在研究不同年龄段人群（分层变量）中，吸烟习惯（分类变量A）与患肺癌情况（分类变量B）之间的关系；或者不同地区（分层变量）中，教育程度（分类变量A）与就业情况（分类变量B）之间的关系等。\n",
    "   - **优势**\n",
    "     - 能够有效控制混杂因素（分层变量）的影响，更准确地评估两个分类变量之间的真实关联。相比于简单地合并所有数据进行卡方检验，CMH检验可以避免因分层变量导致的虚假关联或掩盖真实关联的情况。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "d33ea80b-9550-4852-9e92-51ede5339518",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Sex = Female\n",
       "\n",
       "         Improved\n",
       "Treatment None Some Marked\n",
       "  Placebo   19    7      6\n",
       "  Treated    6    5     16\n",
       "\n",
       ", , Sex = Male\n",
       "\n",
       "         Improved\n",
       "Treatment None Some Marked\n",
       "  Placebo   10    0      1\n",
       "  Treated    7    2      5\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Treatment+Improved+Sex,data=Arthritis)\n",
    "mytable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "9cb0e3be-6fef-4dde-a1d6-2772ccab6640",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       ", , Sex = Female\n",
       "\n",
       "         Improved\n",
       "Treatment None Some Marked Sum\n",
       "  Placebo   19    7      6  32\n",
       "  Treated    6    5     16  27\n",
       "  Sum       25   12     22  59\n",
       "\n",
       ", , Sex = Male\n",
       "\n",
       "         Improved\n",
       "Treatment None Some Marked Sum\n",
       "  Placebo   10    0      1  11\n",
       "  Treated    7    2      5  14\n",
       "  Sum       17    2      6  25\n",
       "\n",
       ", , Sex = Sum\n",
       "\n",
       "         Improved\n",
       "Treatment None Some Marked Sum\n",
       "  Placebo   29    7      7  43\n",
       "  Treated   13    7     21  41\n",
       "  Sum       42   14     28  84\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "addmargins(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "72f37c1c-7420-4339-88a9-6d677ad4826b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tCochran-Mantel-Haenszel test\n",
       "\n",
       "data:  mytable\n",
       "Cochran-Mantel-Haenszel M^2 = 14.632, df = 2, p-value = 0.0006647\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mantelhaen.test(mytable)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "523afdf7-789d-4a84-be8f-c03c0cc5db37",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                    X^2 df  P(> X^2)\n",
       "Likelihood Ratio 13.530  2 0.0011536\n",
       "Pearson          13.055  2 0.0014626\n",
       "\n",
       "Phi-Coefficient   : NA \n",
       "Contingency Coeff.: 0.367 \n",
       "Cramer's V        : 0.394 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mytable <- xtabs(~Treatment+Improved,data=Arthritis)\n",
    "assocstats(mytable)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "30473b32-999b-4344-b5fa-b38de6d809f7",
   "metadata": {},
   "source": [
    "- $\\phi$相关系数：$\\phi=\\sqrt{\\chi^2/n}$,适合$2\\times2$列联表，所以上面结果为NA\n",
    "- 列联系数(coefficient of contingency)，简称$c$系数：$c = \\sqrt{\\frac{\\chi^2}{\\chi^2+n}}$\n",
    "- v相关系数(格莱美V):$V = \\sqrt{\\frac{\\chi^2}{n\\times min[(R-1),(C-1)]}}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "a4bb1aea-1db8-46b0-8069-bf4a5dacb135",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "0.394229205750496"
      ],
      "text/latex": [
       "0.394229205750496"
      ],
      "text/markdown": [
       "0.394229205750496"
      ],
      "text/plain": [
       "[1] 0.3942292"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sqrt(13.055/84)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "33a2c5b3-30a6-4254-8acf-e13897f2f46d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ?kappa"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b010f1bb-3005-4959-a100-51a749ada714",
   "metadata": {},
   "source": [
    "### 相关"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "fef6e6cb-6153-4d8c-a497-7644c6d918a4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\tKendall's rank correlation tau\n",
      "\n",
      "data:  dat1 and dat2\n",
      "T = 25, p-value = 0.1802\n",
      "alternative hypothesis: true tau is not equal to 0\n",
      "sample estimates:\n",
      "      tau \n",
      "0.3888889 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "dat1 <- c(3, 5, 1, 9, 7, 2, 8, 4, 6)\n",
    "dat2 <- c(5, 3, 2, 6, 8, 1, 7, 9, 4)\n",
    "result <- cor.test(dat1, dat2, method = \"kendall\")\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "c01e40b0-ce7a-4a72-bc60-bdfec8d070d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "dat1 <- c(3, 5, 1, 9, 7, 2, 8, 4, 6)\n",
    "dat2 <- c(5, 3, 2, 6, 8, 1, 7, 9, 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "5bdba8af-112a-4c29-941e-1e429c425e25",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "0.388888888888889"
      ],
      "text/latex": [
       "0.388888888888889"
      ],
      "text/markdown": [
       "0.388888888888889"
      ],
      "text/plain": [
       "[1] 0.3888889"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "7/18"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "93596925-92a5-4d61-b214-d7b32fe07dd6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "0"
      ],
      "text/latex": [
       "0"
      ],
      "text/markdown": [
       "0"
      ],
      "text/plain": [
       "[1] 0"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sum(dat1-dat2)/length(dat1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "7bbf4e7b-37c0-4d11-8e28-b4a6402a98ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\tKendall's rank correlation tau\n",
      "\n",
      "data:  dat1 and dat2\n",
      "T = 1, p-value = 1\n",
      "alternative hypothesis: true tau is not equal to 0\n",
      "sample estimates:\n",
      "       tau \n",
      "-0.3333333 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "dat1 <- c(3, 2, 1)\n",
    "dat2 <- c(1, 3, 2)\n",
    "result <- cor.test(dat1, dat2, method = \"kendall\")\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0987eb13-d544-4314-bc91-baebe1e3f21b",
   "metadata": {},
   "source": [
    "**上述：**\n",
    "\n",
    "$(x_1,x_2)$和$(y_1,y_2)$不一致\n",
    "\n",
    "$(x_1,x_3)$和$y_1,y_3$不一致\n",
    "\n",
    "$(x_2,x_3)$和$y_2,y_3$一致\n",
    "\n",
    "**因此:**\n",
    "\n",
    "c = 1,d=2\n",
    "\n",
    "$\\tau = \\frac{c-d}{\\frac{1}{2}n(n-1)} = -\\frac{1}{3}$\n",
    "\n",
    "**注意**：上面结果中的$T$就是一致对的个数和$\\tau$是不一样的"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "606899c7-3cf7-41bb-b928-3a920f11db61",
   "metadata": {},
   "source": [
    "value of t-test for each correlation\n",
    "\n",
    "two tailed probability of t for each correlation. For symmetric matrices, p values adjusted for multiple tests are reported above the diagonal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "30621f7b-a151-4da5-ab9d-a148cedc35d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\tKendall's rank correlation tau\n",
      "\n",
      "data:  dat1 and dat2\n",
      "T = 4, p-value = 0.75\n",
      "alternative hypothesis: true tau is not equal to 0\n",
      "sample estimates:\n",
      "      tau \n",
      "0.3333333 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "dat1 <- c(3, 2, 1,5)\n",
    "dat2 <- c(1, 3, 2,4)\n",
    "result <- cor.test(dat1, dat2, method = \"kendall\")\n",
    "print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4c0a789-a079-4270-81e2-673ba067b25f",
   "metadata": {},
   "source": [
    "折腾了半天还是不知道`p-value`是如何计算的，只看到一句`Note that in the case of method==\"kendall\" since these are the normal theory confidence intervals they are slightly too big.The probability values may be adjusted using the Holm (or other) correction. `"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "feeae326-0b26-4264-af16-0fc8468c0c7c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>Population</th><th scope=col>Income</th><th scope=col>Illiteracy</th><th scope=col>Life Exp</th><th scope=col>Murder</th><th scope=col>HS Grad</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Population</th><td>19931683.7588</td><td>571229.7796</td><td> 292.8679592</td><td>-407.8424612</td><td>5663.523714</td><td>-3551.509551</td></tr>\n",
       "\t<tr><th scope=row>Income</th><td>  571229.7796</td><td>377573.3061</td><td>-163.7020408</td><td> 280.6631837</td><td>-521.894286</td><td> 3076.768980</td></tr>\n",
       "\t<tr><th scope=row>Illiteracy</th><td>     292.8680</td><td>  -163.7020</td><td>   0.3715306</td><td>  -0.4815122</td><td>   1.581776</td><td>   -3.235469</td></tr>\n",
       "\t<tr><th scope=row>Life Exp</th><td>    -407.8425</td><td>   280.6632</td><td>  -0.4815122</td><td>   1.8020204</td><td>  -3.869480</td><td>    6.312685</td></tr>\n",
       "\t<tr><th scope=row>Murder</th><td>    5663.5237</td><td>  -521.8943</td><td>   1.5817755</td><td>  -3.8694804</td><td>  13.627465</td><td>  -14.549616</td></tr>\n",
       "\t<tr><th scope=row>HS Grad</th><td>   -3551.5096</td><td>  3076.7690</td><td>  -3.2354694</td><td>   6.3126849</td><td> -14.549616</td><td>   65.237894</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 6 × 6 of type dbl\n",
       "\\begin{tabular}{r|llllll}\n",
       "  & Population & Income & Illiteracy & Life Exp & Murder & HS Grad\\\\\n",
       "\\hline\n",
       "\tPopulation & 19931683.7588 & 571229.7796 &  292.8679592 & -407.8424612 & 5663.523714 & -3551.509551\\\\\n",
       "\tIncome &   571229.7796 & 377573.3061 & -163.7020408 &  280.6631837 & -521.894286 &  3076.768980\\\\\n",
       "\tIlliteracy &      292.8680 &   -163.7020 &    0.3715306 &   -0.4815122 &    1.581776 &    -3.235469\\\\\n",
       "\tLife Exp &     -407.8425 &    280.6632 &   -0.4815122 &    1.8020204 &   -3.869480 &     6.312685\\\\\n",
       "\tMurder &     5663.5237 &   -521.8943 &    1.5817755 &   -3.8694804 &   13.627465 &   -14.549616\\\\\n",
       "\tHS Grad &    -3551.5096 &   3076.7690 &   -3.2354694 &    6.3126849 &  -14.549616 &    65.237894\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 6 × 6 of type dbl\n",
       "\n",
       "| <!--/--> | Population | Income | Illiteracy | Life Exp | Murder | HS Grad |\n",
       "|---|---|---|---|---|---|---|\n",
       "| Population | 19931683.7588 | 571229.7796 |  292.8679592 | -407.8424612 | 5663.523714 | -3551.509551 |\n",
       "| Income |   571229.7796 | 377573.3061 | -163.7020408 |  280.6631837 | -521.894286 |  3076.768980 |\n",
       "| Illiteracy |      292.8680 |   -163.7020 |    0.3715306 |   -0.4815122 |    1.581776 |    -3.235469 |\n",
       "| Life Exp |     -407.8425 |    280.6632 |   -0.4815122 |    1.8020204 |   -3.869480 |     6.312685 |\n",
       "| Murder |     5663.5237 |   -521.8943 |    1.5817755 |   -3.8694804 |   13.627465 |   -14.549616 |\n",
       "| HS Grad |    -3551.5096 |   3076.7690 |   -3.2354694 |    6.3126849 |  -14.549616 |    65.237894 |\n",
       "\n"
      ],
      "text/plain": [
       "           Population    Income      Illiteracy   Life Exp     Murder     \n",
       "Population 19931683.7588 571229.7796  292.8679592 -407.8424612 5663.523714\n",
       "Income       571229.7796 377573.3061 -163.7020408  280.6631837 -521.894286\n",
       "Illiteracy      292.8680   -163.7020    0.3715306   -0.4815122    1.581776\n",
       "Life Exp       -407.8425    280.6632   -0.4815122    1.8020204   -3.869480\n",
       "Murder         5663.5237   -521.8943    1.5817755   -3.8694804   13.627465\n",
       "HS Grad       -3551.5096   3076.7690   -3.2354694    6.3126849  -14.549616\n",
       "           HS Grad     \n",
       "Population -3551.509551\n",
       "Income      3076.768980\n",
       "Illiteracy    -3.235469\n",
       "Life Exp       6.312685\n",
       "Murder       -14.549616\n",
       "HS Grad       65.237894"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "states <-state.x77[,1:6]\n",
    "cov(states)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "49eddf31-13ae-4a4b-a108-1469f6be787e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>Population</th><th scope=col>Income</th><th scope=col>Illiteracy</th><th scope=col>Life Exp</th><th scope=col>Murder</th><th scope=col>HS Grad</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Population</th><td> 1.00000000</td><td> 0.2082276</td><td> 0.1076224</td><td>-0.06805195</td><td> 0.3436428</td><td>-0.09848975</td></tr>\n",
       "\t<tr><th scope=row>Income</th><td> 0.20822756</td><td> 1.0000000</td><td>-0.4370752</td><td> 0.34025534</td><td>-0.2300776</td><td> 0.61993232</td></tr>\n",
       "\t<tr><th scope=row>Illiteracy</th><td> 0.10762237</td><td>-0.4370752</td><td> 1.0000000</td><td>-0.58847793</td><td> 0.7029752</td><td>-0.65718861</td></tr>\n",
       "\t<tr><th scope=row>Life Exp</th><td>-0.06805195</td><td> 0.3402553</td><td>-0.5884779</td><td> 1.00000000</td><td>-0.7808458</td><td> 0.58221620</td></tr>\n",
       "\t<tr><th scope=row>Murder</th><td> 0.34364275</td><td>-0.2300776</td><td> 0.7029752</td><td>-0.78084575</td><td> 1.0000000</td><td>-0.48797102</td></tr>\n",
       "\t<tr><th scope=row>HS Grad</th><td>-0.09848975</td><td> 0.6199323</td><td>-0.6571886</td><td> 0.58221620</td><td>-0.4879710</td><td> 1.00000000</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 6 × 6 of type dbl\n",
       "\\begin{tabular}{r|llllll}\n",
       "  & Population & Income & Illiteracy & Life Exp & Murder & HS Grad\\\\\n",
       "\\hline\n",
       "\tPopulation &  1.00000000 &  0.2082276 &  0.1076224 & -0.06805195 &  0.3436428 & -0.09848975\\\\\n",
       "\tIncome &  0.20822756 &  1.0000000 & -0.4370752 &  0.34025534 & -0.2300776 &  0.61993232\\\\\n",
       "\tIlliteracy &  0.10762237 & -0.4370752 &  1.0000000 & -0.58847793 &  0.7029752 & -0.65718861\\\\\n",
       "\tLife Exp & -0.06805195 &  0.3402553 & -0.5884779 &  1.00000000 & -0.7808458 &  0.58221620\\\\\n",
       "\tMurder &  0.34364275 & -0.2300776 &  0.7029752 & -0.78084575 &  1.0000000 & -0.48797102\\\\\n",
       "\tHS Grad & -0.09848975 &  0.6199323 & -0.6571886 &  0.58221620 & -0.4879710 &  1.00000000\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 6 × 6 of type dbl\n",
       "\n",
       "| <!--/--> | Population | Income | Illiteracy | Life Exp | Murder | HS Grad |\n",
       "|---|---|---|---|---|---|---|\n",
       "| Population |  1.00000000 |  0.2082276 |  0.1076224 | -0.06805195 |  0.3436428 | -0.09848975 |\n",
       "| Income |  0.20822756 |  1.0000000 | -0.4370752 |  0.34025534 | -0.2300776 |  0.61993232 |\n",
       "| Illiteracy |  0.10762237 | -0.4370752 |  1.0000000 | -0.58847793 |  0.7029752 | -0.65718861 |\n",
       "| Life Exp | -0.06805195 |  0.3402553 | -0.5884779 |  1.00000000 | -0.7808458 |  0.58221620 |\n",
       "| Murder |  0.34364275 | -0.2300776 |  0.7029752 | -0.78084575 |  1.0000000 | -0.48797102 |\n",
       "| HS Grad | -0.09848975 |  0.6199323 | -0.6571886 |  0.58221620 | -0.4879710 |  1.00000000 |\n",
       "\n"
      ],
      "text/plain": [
       "           Population  Income     Illiteracy Life Exp    Murder     HS Grad    \n",
       "Population  1.00000000  0.2082276  0.1076224 -0.06805195  0.3436428 -0.09848975\n",
       "Income      0.20822756  1.0000000 -0.4370752  0.34025534 -0.2300776  0.61993232\n",
       "Illiteracy  0.10762237 -0.4370752  1.0000000 -0.58847793  0.7029752 -0.65718861\n",
       "Life Exp   -0.06805195  0.3402553 -0.5884779  1.00000000 -0.7808458  0.58221620\n",
       "Murder      0.34364275 -0.2300776  0.7029752 -0.78084575  1.0000000 -0.48797102\n",
       "HS Grad    -0.09848975  0.6199323 -0.6571886  0.58221620 -0.4879710  1.00000000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cor(states)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "36298955-1b20-4417-977a-a32dddc6e6b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>Population</th><th scope=col>Income</th><th scope=col>Illiteracy</th><th scope=col>Life Exp</th><th scope=col>Murder</th><th scope=col>HS Grad</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Population</th><td> 1.0000000</td><td> 0.1246098</td><td> 0.3130496</td><td>-0.1040171</td><td> 0.3457401</td><td>-0.3833649</td></tr>\n",
       "\t<tr><th scope=row>Income</th><td> 0.1246098</td><td> 1.0000000</td><td>-0.3145948</td><td> 0.3241050</td><td>-0.2174623</td><td> 0.5104809</td></tr>\n",
       "\t<tr><th scope=row>Illiteracy</th><td> 0.3130496</td><td>-0.3145948</td><td> 1.0000000</td><td>-0.5553735</td><td> 0.6723592</td><td>-0.6545396</td></tr>\n",
       "\t<tr><th scope=row>Life Exp</th><td>-0.1040171</td><td> 0.3241050</td><td>-0.5553735</td><td> 1.0000000</td><td>-0.7802406</td><td> 0.5239410</td></tr>\n",
       "\t<tr><th scope=row>Murder</th><td> 0.3457401</td><td>-0.2174623</td><td> 0.6723592</td><td>-0.7802406</td><td> 1.0000000</td><td>-0.4367330</td></tr>\n",
       "\t<tr><th scope=row>HS Grad</th><td>-0.3833649</td><td> 0.5104809</td><td>-0.6545396</td><td> 0.5239410</td><td>-0.4367330</td><td> 1.0000000</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 6 × 6 of type dbl\n",
       "\\begin{tabular}{r|llllll}\n",
       "  & Population & Income & Illiteracy & Life Exp & Murder & HS Grad\\\\\n",
       "\\hline\n",
       "\tPopulation &  1.0000000 &  0.1246098 &  0.3130496 & -0.1040171 &  0.3457401 & -0.3833649\\\\\n",
       "\tIncome &  0.1246098 &  1.0000000 & -0.3145948 &  0.3241050 & -0.2174623 &  0.5104809\\\\\n",
       "\tIlliteracy &  0.3130496 & -0.3145948 &  1.0000000 & -0.5553735 &  0.6723592 & -0.6545396\\\\\n",
       "\tLife Exp & -0.1040171 &  0.3241050 & -0.5553735 &  1.0000000 & -0.7802406 &  0.5239410\\\\\n",
       "\tMurder &  0.3457401 & -0.2174623 &  0.6723592 & -0.7802406 &  1.0000000 & -0.4367330\\\\\n",
       "\tHS Grad & -0.3833649 &  0.5104809 & -0.6545396 &  0.5239410 & -0.4367330 &  1.0000000\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 6 × 6 of type dbl\n",
       "\n",
       "| <!--/--> | Population | Income | Illiteracy | Life Exp | Murder | HS Grad |\n",
       "|---|---|---|---|---|---|---|\n",
       "| Population |  1.0000000 |  0.1246098 |  0.3130496 | -0.1040171 |  0.3457401 | -0.3833649 |\n",
       "| Income |  0.1246098 |  1.0000000 | -0.3145948 |  0.3241050 | -0.2174623 |  0.5104809 |\n",
       "| Illiteracy |  0.3130496 | -0.3145948 |  1.0000000 | -0.5553735 |  0.6723592 | -0.6545396 |\n",
       "| Life Exp | -0.1040171 |  0.3241050 | -0.5553735 |  1.0000000 | -0.7802406 |  0.5239410 |\n",
       "| Murder |  0.3457401 | -0.2174623 |  0.6723592 | -0.7802406 |  1.0000000 | -0.4367330 |\n",
       "| HS Grad | -0.3833649 |  0.5104809 | -0.6545396 |  0.5239410 | -0.4367330 |  1.0000000 |\n",
       "\n"
      ],
      "text/plain": [
       "           Population Income     Illiteracy Life Exp   Murder     HS Grad   \n",
       "Population  1.0000000  0.1246098  0.3130496 -0.1040171  0.3457401 -0.3833649\n",
       "Income      0.1246098  1.0000000 -0.3145948  0.3241050 -0.2174623  0.5104809\n",
       "Illiteracy  0.3130496 -0.3145948  1.0000000 -0.5553735  0.6723592 -0.6545396\n",
       "Life Exp   -0.1040171  0.3241050 -0.5553735  1.0000000 -0.7802406  0.5239410\n",
       "Murder      0.3457401 -0.2174623  0.6723592 -0.7802406  1.0000000 -0.4367330\n",
       "HS Grad    -0.3833649  0.5104809 -0.6545396  0.5239410 -0.4367330  1.0000000"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cor(states,method=\"spearman\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "2f7f0503-87b0-4a29-b444-3c25febc5d7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 4 × 2 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>Life Exp</th><th scope=col>Murder</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>Population</th><td>-0.06805195</td><td> 0.3436428</td></tr>\n",
       "\t<tr><th scope=row>Income</th><td> 0.34025534</td><td>-0.2300776</td></tr>\n",
       "\t<tr><th scope=row>Illiteracy</th><td>-0.58847793</td><td> 0.7029752</td></tr>\n",
       "\t<tr><th scope=row>HS Grad</th><td> 0.58221620</td><td>-0.4879710</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 4 × 2 of type dbl\n",
       "\\begin{tabular}{r|ll}\n",
       "  & Life Exp & Murder\\\\\n",
       "\\hline\n",
       "\tPopulation & -0.06805195 &  0.3436428\\\\\n",
       "\tIncome &  0.34025534 & -0.2300776\\\\\n",
       "\tIlliteracy & -0.58847793 &  0.7029752\\\\\n",
       "\tHS Grad &  0.58221620 & -0.4879710\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 4 × 2 of type dbl\n",
       "\n",
       "| <!--/--> | Life Exp | Murder |\n",
       "|---|---|---|\n",
       "| Population | -0.06805195 |  0.3436428 |\n",
       "| Income |  0.34025534 | -0.2300776 |\n",
       "| Illiteracy | -0.58847793 |  0.7029752 |\n",
       "| HS Grad |  0.58221620 | -0.4879710 |\n",
       "\n"
      ],
      "text/plain": [
       "           Life Exp    Murder    \n",
       "Population -0.06805195  0.3436428\n",
       "Income      0.34025534 -0.2300776\n",
       "Illiteracy -0.58847793  0.7029752\n",
       "HS Grad     0.58221620 -0.4879710"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x <- states[,c(\"Population\",\"Income\",\"Illiteracy\",\"HS Grad\")]\n",
    "y <- states[,c(\"Life Exp\",\"Murder\")]\n",
    "cor(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "45e34ac3-bf85-4986-88f4-067e41911841",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"ggm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7c93c7f-5183-4a61-ad2b-2dc1fa5b5bdf",
   "metadata": {},
   "source": [
    "偏相关是控制一个或多个给定变量时，另外两个定量变量之间的相互关系。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "cdba80f8-a5ad-438a-9359-d8b03c110cf5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"graph\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a985953e-7054-4232-9049-705532ddbffe",
   "metadata": {},
   "source": [
    "```r\n",
    "library(ggm)\n",
    "\n",
    "ggm::pcor(c(1,5,2,3,6),cov(states))\n",
    "```\n",
    "dt,上面代码直接报错，因为没有依赖包graph，安装graph说该版本R不支持graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "498b5524-54bc-4d4f-9c08-0879766a5e16",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"ppcor\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "11a5a902-052f-4d5b-ba7c-d563214e9297",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: MASS\n",
      "\n",
      "\n",
      "Attaching package: 'MASS'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:sm':\n",
      "\n",
      "    muscle\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "library(ppcor)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "dc208e27-50ba-4a6b-b4a6-e286a9fda1df",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "$estimate\n",
      "           Population      Murder      Income  Illiteracy     HS Grad\n",
      "Population  1.0000000  0.34627237  0.31327745 -0.14771922 -0.18061967\n",
      "Murder      0.3462724  1.00000000  0.03937915  0.59897405 -0.05232753\n",
      "Income      0.3132774  0.03937915  1.00000000 -0.08325202  0.52439361\n",
      "Illiteracy -0.1477192  0.59897405 -0.08325202  1.00000000 -0.38150422\n",
      "HS Grad    -0.1806197 -0.05232753  0.52439361 -0.38150422  1.00000000\n",
      "\n",
      "$p.value\n",
      "           Population       Murder       Income   Illiteracy      HS Grad\n",
      "Population 0.00000000 1.711252e-02 0.0320178333 3.217384e-01 0.2243870366\n",
      "Murder     0.01711252 0.000000e+00 0.7927031319 8.671525e-06 0.7268498564\n",
      "Income     0.03201783 7.927031e-01 0.0000000000 5.779747e-01 0.0001546294\n",
      "Illiteracy 0.32173843 8.671525e-06 0.5779746875 0.000000e+00 0.0081465765\n",
      "HS Grad    0.22438704 7.268499e-01 0.0001546294 8.146576e-03 0.0000000000\n",
      "\n",
      "$statistic\n",
      "           Population     Murder     Income Illiteracy    HS Grad\n",
      "Population   0.000000  2.4760489  2.2129240  -1.001922 -1.2318945\n",
      "Murder       2.476049  0.0000000  0.2643684   5.017730 -0.3515053\n",
      "Income       2.212924  0.2643684  0.0000000  -0.560417  4.1313430\n",
      "Illiteracy  -1.001922  5.0177304 -0.5604170   0.000000 -2.7686058\n",
      "HS Grad     -1.231895 -0.3515053  4.1313430  -2.768606  0.0000000\n",
      "\n",
      "$n\n",
      "[1] 50\n",
      "\n",
      "$gp\n",
      "[1] 3\n",
      "\n",
      "$method\n",
      "[1] \"pearson\"\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(pcor(states[,c(1,5,2,3,6)]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "0c8ad13e-a485-4258-a7ef-9984eaf91b9f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "2.55725251278593"
      ],
      "text/latex": [
       "2.55725251278593"
      ],
      "text/markdown": [
       "2.55725251278593"
      ],
      "text/plain": [
       "[1] 2.557253"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "0.3462724*sqrt((50-2)/(1-0.3462724^2))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72ec203d-f9af-4fd4-b81c-9463dfbab226",
   "metadata": {},
   "source": [
    "相关性的显著性检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "9f07b7fd-0e8b-454d-8aca-0026b80e9565",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tPearson's product-moment correlation\n",
       "\n",
       "data:  states[, 3] and states[, 5]\n",
       "t = 6.8479, df = 48, p-value = 1.258e-08\n",
       "alternative hypothesis: true correlation is not equal to 0\n",
       "95 percent confidence interval:\n",
       " 0.5279280 0.8207295\n",
       "sample estimates:\n",
       "      cor \n",
       "0.7029752 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cor.test(states[,3],states[,5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "id": "d5104446-dc61-43c7-ad5b-ed39c5cd7518",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "1.25810037943097e-08"
      ],
      "text/latex": [
       "1.25810037943097e-08"
      ],
      "text/markdown": [
       "1.25810037943097e-08"
      ],
      "text/plain": [
       "[1] 1.2581e-08"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "2*(1-pt(6.8479,48))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fde83082-c848-4e94-8f75-cb5d87d1d8bd",
   "metadata": {},
   "source": [
    "$t = \\vert r \\vert\\sqrt{\\frac{n-2}{1-r^2}} \\sim t(n-2)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "id": "8d6bce78-e5e2-4df7-8e14-037d59340f47",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "6.84794249697062"
      ],
      "text/latex": [
       "6.84794249697062"
      ],
      "text/markdown": [
       "6.84794249697062"
      ],
      "text/plain": [
       "[1] 6.847942"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "0.7029752*sqrt(48/(1-0.7029752^2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "cdf616ee-8d00-4c32-9fb7-daeb77671ba8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tPearson's product-moment correlation\n",
       "\n",
       "data:  states[, 3] and states[, 5]\n",
       "t = 6.8479, df = 48, p-value = 6.29e-09\n",
       "alternative hypothesis: true correlation is greater than 0\n",
       "95 percent confidence interval:\n",
       " 0.5602735 1.0000000\n",
       "sample estimates:\n",
       "      cor \n",
       "0.7029752 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cor.test(states[,3],states[,5],\"greater\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "6c2d04b7-250a-4644-b52f-84bc8f8ef9b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tWelch Two Sample t-test\n",
       "\n",
       "data:  Prob by So\n",
       "t = -3.8954, df = 24.925, p-value = 0.0006506\n",
       "alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0\n",
       "95 percent confidence interval:\n",
       " -0.03852569 -0.01187439\n",
       "sample estimates:\n",
       "mean in group 0 mean in group 1 \n",
       "     0.03851265      0.06371269 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(MASS)\n",
    "t.test(Prob~So,data=UScrime)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "060371eb-8b6e-436a-a79c-c22069d3f8c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "0"
      ],
      "text/latex": [
       "0"
      ],
      "text/markdown": [
       "0"
      ],
      "text/plain": [
       "[1] 0"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "0.03851265-0.03851265 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "ff406f9c-1ac0-4626-a751-f801821f1e26",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "UScrime$So: 0\n",
       "                   M  So          Ed        Po1        Po2          LF\n",
       "n         31.0000000  31  31.0000000 31.0000000 31.0000000  31.0000000\n",
       "mean     133.3548387   0 111.2258065 92.8709677 87.7096774 575.7096774\n",
       "stdev      8.5266187   0   7.7015569 30.1294340 28.2762486  35.1569752\n",
       "skew       0.4229421 NaN  -0.4181007  0.7676225  0.7174842   0.0763124\n",
       "kurtosis  -0.7024050 NaN  -0.6077926 -0.1655779 -0.3297956  -1.1482558\n",
       "                 M.F       Pop         NW         U1         U2         GDP\n",
       "n         31.0000000 31.000000 31.0000000 31.0000000 31.0000000  31.0000000\n",
       "mean     989.6129032 37.967742 45.0645161 97.6774194 33.5483871 569.0645161\n",
       "stdev     33.4252174 44.879456 32.7698393 18.4017881  8.7591427  65.6343078\n",
       "skew       0.5586754  1.572383  0.4568512  0.6286666  0.4985064  -0.1300665\n",
       "kurtosis  -0.4148337  1.467311 -1.3306044 -0.3969537  0.2116628  -0.6698257\n",
       "                Ineq        Prob       Time            y\n",
       "n         31.0000000 31.00000000 31.0000000  31.00000000\n",
       "mean     173.0967742  0.03851265 26.2613903 930.00000000\n",
       "stdev     24.9190086  0.01777782  8.0733127 437.01540781\n",
       "skew       0.4245946  0.81462879  0.4507642   0.92124991\n",
       "kurtosis  -0.4097541  0.69874401 -0.7702747   0.03264543\n",
       "------------------------------------------------------------ \n",
       "UScrime$So: 1\n",
       "                   M  So         Ed        Po1         Po2         LF\n",
       "n         16.0000000  16 16.0000000 16.0000000 16.00000000  16.000000\n",
       "mean     148.6875000   1 94.8125000 69.7500000 65.75000000 533.062500\n",
       "stdev     13.1743121   0  8.6965031 22.7347018 21.43050785  35.448496\n",
       "skew       0.3165284 NaN  0.6499097  1.0666020  1.02733041   1.366089\n",
       "kurtosis  -0.6333221 NaN -1.3724752  0.1227803  0.06381204   2.254788\n",
       "                 M.F       Pop          NW         U1         U2         GDP\n",
       "n         16.0000000 16.000000  16.0000000 16.0000000 16.0000000  16.0000000\n",
       "mean     970.2500000 34.000000 209.7500000 91.1875000 34.8125000 440.7500000\n",
       "stdev     12.8296532 20.136203 105.8177679 17.0263277  8.0101498  91.3940188\n",
       "skew       0.1164905  1.576004   0.2987377  1.0308092  0.6718143   0.5734321\n",
       "kurtosis  -0.9373206  3.020420  -1.0125687  0.3696532 -0.4874559  -0.1725755\n",
       "                 Ineq        Prob        Time           y\n",
       "n         16.00000000 16.00000000 16.00000000  16.0000000\n",
       "mean     234.50000000  0.06371269 27.24995000 856.8125000\n",
       "stdev     31.41125064  0.02250536  4.79335226 270.1760460\n",
       "skew      -1.04435166  0.86300709  0.08777215   0.6776674\n",
       "kurtosis   0.08955378 -0.10542389 -0.59815046   0.6451808"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "by(UScrime,UScrime$So,FUN=dstats)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "5fc128e2-385d-42c5-8f85-a03849dae41e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "-3.889428826685"
      ],
      "text/latex": [
       "-3.889428826685"
      ],
      "text/markdown": [
       "-3.889428826685"
      ],
      "text/plain": [
       "[1] -3.889429"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "(0.03851265-0.06371269) /sqrt((30*0.02250536^2+15*0.01777782^2)/(45)*(1/16+1/31))#假设方差相等"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "b71e69af-f2df-4b89-a31a-2d4b1c234fc1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tWelch Two Sample t-test\n",
       "\n",
       "data:  Prob by So\n",
       "t = -3.8954, df = 24.925, p-value = 0.0006506\n",
       "alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0\n",
       "95 percent confidence interval:\n",
       " -0.03852569 -0.01187439\n",
       "sample estimates:\n",
       "mean in group 0 mean in group 1 \n",
       "     0.03851265      0.06371269 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "t.test(Prob~So,data=UScrime)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa83e902-75bd-4083-9bec-21b931232adb",
   "metadata": {},
   "source": [
    "总的来说，alternative ='greater'和alternative ='less'的主要区别在于它们所代表的备择假设方向不同，一个是检验总体参数是否大于某个值，另一个是检验总体参数是否小于某个值。默认two-side。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "id": "e6fbcf5d-c789-4168-829f-1d83e2395fd5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 2 × 2 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>U1</th><th scope=col>U2</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>mean</th><td>95.46809</td><td>33.97872</td></tr>\n",
       "\t<tr><th scope=row>sd</th><td>18.02878</td><td> 8.44545</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 2 × 2 of type dbl\n",
       "\\begin{tabular}{r|ll}\n",
       "  & U1 & U2\\\\\n",
       "\\hline\n",
       "\tmean & 95.46809 & 33.97872\\\\\n",
       "\tsd & 18.02878 &  8.44545\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 2 × 2 of type dbl\n",
       "\n",
       "| <!--/--> | U1 | U2 |\n",
       "|---|---|---|\n",
       "| mean | 95.46809 | 33.97872 |\n",
       "| sd | 18.02878 |  8.44545 |\n",
       "\n"
      ],
      "text/plain": [
       "     U1       U2      \n",
       "mean 95.46809 33.97872\n",
       "sd   18.02878  8.44545"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(MASS)\n",
    "sapply(UScrime[c(\"U1\",\"U2\")],function(x){c(mean=mean(x),sd=sd(x))})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "id": "6fd51dfd-18bb-4b4d-89f7-91770b716ecd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tPaired t-test\n",
       "\n",
       "data:  U1 and U2\n",
       "t = 32.407, df = 46, p-value < 2.2e-16\n",
       "alternative hypothesis: true mean difference is not equal to 0\n",
       "95 percent confidence interval:\n",
       " 57.67003 65.30870\n",
       "sample estimates:\n",
       "mean difference \n",
       "       61.48936 \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with(UScrime,t.test(U1,U2,paired=TRUE))#参数paired写成了paried不起作用，但是竟然不报错……"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "id": "507df368-644d-4108-805a-49f0b0f1d353",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 47 16\n"
     ]
    }
   ],
   "source": [
    "print(dim(UScrime))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "id": "c4e56221-a45c-4050-95dd-77d8163621e0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 47\n"
     ]
    }
   ],
   "source": [
    "print(nrow(UScrime))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "id": "28befbe8-2ba8-41f5-9665-3a4182d98618",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "61.4893617021277"
      ],
      "text/latex": [
       "61.4893617021277"
      ],
      "text/markdown": [
       "61.4893617021277"
      ],
      "text/plain": [
       "[1] 61.48936"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sum((UScrime$U1 - UScrime$U2))/47 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "id": "a71114a9-68b9-4d0e-8097-e607ecec1ab3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tWilcoxon rank sum exact test\n",
       "\n",
       "data:  Prob by So\n",
       "W = 81, p-value = 8.488e-05\n",
       "alternative hypothesis: true location shift is not equal to 0\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "wilcox.test(Prob~So,UScrime)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "id": "fa15d622-677f-40da-ba81-9fd5b7c1072e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           Region Population Income Illiteracy Life.Exp Murder HS.Grad Frost\n",
      "Alabama     South       3615   3624        2.1    69.05   15.1    41.3    20\n",
      "Alaska       West        365   6315        1.5    69.31   11.3    66.7   152\n",
      "Arizona      West       2212   4530        1.8    70.55    7.8    58.1    15\n",
      "Arkansas    South       2110   3378        1.9    70.66   10.1    39.9    65\n",
      "California   West      21198   5114        1.1    71.71   10.3    62.6    20\n",
      "Colorado     West       2541   4884        0.7    72.06    6.8    63.9   166\n",
      "             Area\n",
      "Alabama     50708\n",
      "Alaska     566432\n",
      "Arizona    113417\n",
      "Arkansas    51945\n",
      "California 156361\n",
      "Colorado   103766\n"
     ]
    }
   ],
   "source": [
    "states <- data.frame(Region=state.region,state.x77)\n",
    "print(head(states))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "5327e68a-6e18-4e35-a9bd-cd5e39db3220",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tKruskal-Wallis rank sum test\n",
       "\n",
       "data:  Illiteracy by Region\n",
       "Kruskal-Wallis chi-squared = 22.672, df = 3, p-value = 4.726e-05\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kruskal.test(Illiteracy~Region,data=states)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "id": "a3376353-a38d-4d03-81e0-c2bae490685b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".list-inline {list-style: none; margin:0; padding: 0}\n",
       ".list-inline>li {display: inline-block}\n",
       ".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n",
       "</style>\n",
       "<ol class=list-inline><li>'colfill'</li><li>'counts'</li><li>'cyl.f'</li><li>'dat1'</li><li>'dat2'</li><li>'dstats'</li><li>'h'</li><li>'lbls'</li><li>'lbls2'</li><li>'lbls3'</li><li>'means'</li><li>'mtcars'</li><li>'mydata'</li><li>'mydatatxt'</li><li>'mystats'</li><li>'mytable'</li><li>'myvars'</li><li>'opar'</li><li>'pct'</li><li>'result'</li><li>'slices'</li><li>'states'</li><li>'x'</li><li>'y'</li></ol>\n"
      ],
      "text/latex": [
       "\\begin{enumerate*}\n",
       "\\item 'colfill'\n",
       "\\item 'counts'\n",
       "\\item 'cyl.f'\n",
       "\\item 'dat1'\n",
       "\\item 'dat2'\n",
       "\\item 'dstats'\n",
       "\\item 'h'\n",
       "\\item 'lbls'\n",
       "\\item 'lbls2'\n",
       "\\item 'lbls3'\n",
       "\\item 'means'\n",
       "\\item 'mtcars'\n",
       "\\item 'mydata'\n",
       "\\item 'mydatatxt'\n",
       "\\item 'mystats'\n",
       "\\item 'mytable'\n",
       "\\item 'myvars'\n",
       "\\item 'opar'\n",
       "\\item 'pct'\n",
       "\\item 'result'\n",
       "\\item 'slices'\n",
       "\\item 'states'\n",
       "\\item 'x'\n",
       "\\item 'y'\n",
       "\\end{enumerate*}\n"
      ],
      "text/markdown": [
       "1. 'colfill'\n",
       "2. 'counts'\n",
       "3. 'cyl.f'\n",
       "4. 'dat1'\n",
       "5. 'dat2'\n",
       "6. 'dstats'\n",
       "7. 'h'\n",
       "8. 'lbls'\n",
       "9. 'lbls2'\n",
       "10. 'lbls3'\n",
       "11. 'means'\n",
       "12. 'mtcars'\n",
       "13. 'mydata'\n",
       "14. 'mydatatxt'\n",
       "15. 'mystats'\n",
       "16. 'mytable'\n",
       "17. 'myvars'\n",
       "18. 'opar'\n",
       "19. 'pct'\n",
       "20. 'result'\n",
       "21. 'slices'\n",
       "22. 'states'\n",
       "23. 'x'\n",
       "24. 'y'\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       " [1] \"colfill\"   \"counts\"    \"cyl.f\"     \"dat1\"      \"dat2\"      \"dstats\"   \n",
       " [7] \"h\"         \"lbls\"      \"lbls2\"     \"lbls3\"     \"means\"     \"mtcars\"   \n",
       "[13] \"mydata\"    \"mydatatxt\" \"mystats\"   \"mytable\"   \"myvars\"    \"opar\"     \n",
       "[19] \"pct\"       \"result\"    \"slices\"    \"states\"    \"x\"         \"y\"        "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ls()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "e3201350-2178-46ba-8b5e-cd6faf1afd43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "'D:/python work/data_analysis_and_digging/r_learning'"
      ],
      "text/latex": [
       "'D:/python work/data\\_analysis\\_and\\_digging/r\\_learning'"
      ],
      "text/markdown": [
       "'D:/python work/data_analysis_and_digging/r_learning'"
      ],
      "text/plain": [
       "[1] \"D:/python work/data_analysis_and_digging/r_learning\""
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "getwd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "id": "cf58838a-05bf-4c1e-8f94-25c5d53841fc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".list-inline {list-style: none; margin:0; padding: 0}\n",
       ".list-inline>li {display: inline-block}\n",
       ".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n",
       "</style>\n",
       "<ol class=list-inline><li>'change_win_path.py'</li><li>'chapter1_3.ipynb'</li><li>'chapter2.R'</li><li>'chapter4_5.ipynb'</li><li>'chapter6_7.ipynb'</li><li>'data'</li><li>'img'</li><li>'wmc.R'</li><li>'wmc.txt'</li></ol>\n"
      ],
      "text/latex": [
       "\\begin{enumerate*}\n",
       "\\item 'change\\_win\\_path.py'\n",
       "\\item 'chapter1\\_3.ipynb'\n",
       "\\item 'chapter2.R'\n",
       "\\item 'chapter4\\_5.ipynb'\n",
       "\\item 'chapter6\\_7.ipynb'\n",
       "\\item 'data'\n",
       "\\item 'img'\n",
       "\\item 'wmc.R'\n",
       "\\item 'wmc.txt'\n",
       "\\end{enumerate*}\n"
      ],
      "text/markdown": [
       "1. 'change_win_path.py'\n",
       "2. 'chapter1_3.ipynb'\n",
       "3. 'chapter2.R'\n",
       "4. 'chapter4_5.ipynb'\n",
       "5. 'chapter6_7.ipynb'\n",
       "6. 'data'\n",
       "7. 'img'\n",
       "8. 'wmc.R'\n",
       "9. 'wmc.txt'\n",
       "\n",
       "\n"
      ],
      "text/plain": [
       "[1] \"change_win_path.py\" \"chapter1_3.ipynb\"   \"chapter2.R\"        \n",
       "[4] \"chapter4_5.ipynb\"   \"chapter6_7.ipynb\"   \"data\"              \n",
       "[7] \"img\"                \"wmc.R\"              \"wmc.txt\"           "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "list.files()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "id": "706fb2bc-15c3-4352-9c36-4f6faed2bcbc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Descriptive Statistics\n",
      "\n",
      "           West North Central Northeast    South\n",
      "n      13.00000      12.00000   9.00000 16.00000\n",
      "median  0.60000       0.70000   1.10000  1.75000\n",
      "mad     0.14826       0.14826   0.29652  0.59304\n",
      "\n",
      "Multiple Comparisons (Wilcoxon Rank Sum Tests)\n",
      "Probability Adjustment = holm\n",
      "\n",
      "        Group.1       Group.2    W            p    \n",
      "1          West North Central 88.0 8.665618e-01    \n",
      "2          West     Northeast 46.5 8.665618e-01    \n",
      "3          West         South 39.0 1.788186e-02   *\n",
      "4 North Central     Northeast 20.5 5.359707e-02   .\n",
      "5 North Central         South  2.0 8.051509e-05 ***\n",
      "6     Northeast         South 18.0 1.187644e-02   *\n",
      "---\n",
      "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n"
     ]
    }
   ],
   "source": [
    "source(\"wmc.txt\")\n",
    "wmc(Illiteracy~Region,data=states,method=\"holm\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c1abccb7-ba71-403e-af7b-7d388ba523ad",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "R",
   "language": "R",
   "name": "ir"
  },
  "language_info": {
   "codemirror_mode": "r",
   "file_extension": ".r",
   "mimetype": "text/x-r-source",
   "name": "R",
   "pygments_lexer": "r",
   "version": "4.4.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
